unit MainUnit; interface uses Windows, Messages, SysUtils, dateUtils, Classes, Controls, Forms, Dialogs, AdvOfficeStatusBar, Menus, AdvMenus, XPMan, ExtCtrls, AdvPanel, ComCtrls, AdvPageControl, AdvNavBar, AdvGlowButton, AdvPicture, ActnList, StdCtrls, DBAdvGrid, DBCtrls, AdvEdit, Spin, StdActns, DB, AdvMemo, deviceRd, AdvDateTimePicker, DBAdvMemo, DBAdvLst, TeeProcs, TeEngine, Chart, DBChart, AdvGroupBox, AdvOfficeButtons, Grids, BaseGrid, AdvGrid, AdvListV, Graphics, Series, ExtActns, ToolPanels, DBClient, DBAccess, MyAccess, TeeDBEdit, TeeDBCrossTab; type TMainForm = class(TForm) Main_Menu: TAdvMainMenu; StatusBar: TAdvOfficeStatusBar; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; Main_Menu_Styler: TAdvMenuStyler; XPMan: TXPManifest; N11: TMenuItem; ActionList: TActionList; Show_points_table: TAction; GoToNewMeasure: TAction; Show_params_table: TAction; Enable_all: TAction; Add_point: TAction; Add_param: TAction; Del_point: TAction; GoToLookResults: TAction; GoToAdmin: TAction; ImageFileOpen: TOpenPicture; Del_param: TAction; Red_point: TAction; Red_param: TAction; Show_all_pat: TAction; new_patient: TAction; del_patient: TAction; red_patient: TAction; look_res_load_data: TAction; look_res_show_15: TAction; look_res_show_max: TAction; look_res_show_min: TAction; look_res_show_mean: TAction; look_res_hide_15: TAction; look_res_hide_max: TAction; look_res_hide_min: TAction; look_res_hide_mean: TAction; Begin_izm: TAction; general_panel: TAdvPanel; top_panel: TAdvPanel; new_measure_btn: TAdvGlowButton; look_results_btn: TAdvGlowButton; general_pc: TAdvPageControl; new_izm_page: TAdvTabSheet; New_izm_pc: TAdvPageControl; izm_tab: TAdvTabSheet; Bevel1: TBevel; Bevel2: TBevel; Panel4: TPanel; new_izm_pat_id: TLabel; new_izm_begin_izm_btn: TAdvGlowButton; Panel5: TPanel; new_izm_pat_title_label: TLabel; new_izm_fam_label: TLabel; new_izm_name_label: TLabel; new_izm_otch_label: TLabel; new_izm_date_label: TLabel; new_izm_prim_label: TLabel; new_izm_fam_znach: TLabel; new_izm_name_znach: TLabel; new_izm_otch_znach: TLabel; new_izm_kol_label: TLabel; new_izm_kol_znach: TLabel; new_izm_date_znach: TLabel; new_izm_look_red_btn: TAdvGlowButton; new_izm_DBMemo_prim: TDBAdvMemo; Panel6: TPanel; new_izm_date_edit_label: TLabel; new_izm_prim_edit_label: TLabel; new_izm_date_picker: TAdvDateTimePicker; new_izm_fam_edit: TAdvEdit; new_izm_name_edit: TAdvEdit; new_izm_otch_edit: TAdvEdit; new_izm_edit_memo: TAdvMemo; new_izm_save_btn: TAdvGlowButton; new_izm_reset_btn: TAdvGlowButton; izm_set_tab: TAdvTabSheet; DBAdvListView1: TDBAdvListView; ComboBox1: TComboBox; GroupBox1: TGroupBox; Image1: TImage; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; New_izm_DB_Grid: TDBAdvGrid; look_results_page: TAdvTabSheet; look_results_pc: TAdvPageControl; look_results_choose_info: TAdvTabSheet; Panel7: TPanel; look_res_choise_capt_label: TLabel; look_res_choise_izm_label: TLabel; look_res_choise_opis_label: TLabel; look_res_choise_uncheck_all: TLabel; look_res_choise_check_all: TLabel; look_res_choise_show_data: TAdvOfficeCheckBox; look_res_choise_show_report: TAdvOfficeCheckBox; look_res_choise_graph_opt: TAdvOfficeCheckGroup; look_res_choise_izm_memo: TDBMemo; look_res_choise_izm: TListView; Panel8: TPanel; look_res_choise_info_capt_label: TLabel; look_res_choise_fam: TLabel; look_res_choise_name: TLabel; look_res_choise_otch: TLabel; look_res_choise_date: TLabel; look_res_choise_prim: TLabel; look_res_choise_fam_znach: TLabel; look_res_choise_name_znach: TLabel; look_res_choise_otch_znach: TLabel; look_res_choise_izm_num: TLabel; look_res_choise_izm_kol: TLabel; look_res_choise_date_znach: TLabel; look_res_choise_memo: TDBAdvMemo; look_res_choise_load_data: TAdvGlowButton; AdvTabSheet2: TAdvTabSheet; DBAdvGrid1: TDBAdvGrid; look_results_graphics: TAdvTabSheet; look_res_graph_choose: TAdvOfficeRadioGroup; look_res_graph_params_choose: TAdvOfficeCheckGroup; look_res_graph_params_GB: TAdvGroupBox; look_res_graph_param1_name: TLabel; look_res_graph_param2_name: TLabel; look_res_graph_param3_name: TLabel; look_res_graph_param4_name: TLabel; look_res_graph_points_GB: TAdvGroupBox; look_res_graph_points_forw: TButton; look_res_graph_points_back: TButton; look_res_graph_chart: TChart; Series1: TPointSeries; AdvTabSheet4: TAdvTabSheet; AdvTabSheet5: TAdvTabSheet; look_results_DB_Grid: TDBAdvGrid; admin_page: TAdvTabSheet; Admin_PC: TAdvPageControl; PointsPanel: TAdvTabSheet; Panel1: TPanel; Point_param_label: TLabel; point_param_name_label: TLabel; Point_param_opis_label: TLabel; pict: TAdvPicture; point_param_name_znach: TLabel; point_param_num_znach: TLabel; point_param_opis_znach: TLabel; Panel2: TPanel; point_param__ins_num_label: TLabel; point_image_label: TLabel; point_image_size_label: TLabel; point_image_size_znach_label: TLabel; point_image: TAdvPicture; point_image_size_znach: TLabel; Point_param_SE: TSpinEdit; point_param_name_edit: TAdvEdit; point_param_ops_edit: TAdvEdit; point_image_label_load: TAdvGlowButton; Panel3: TPanel; Label1: TLabel; Label2: TLabel; point_param_reset_btn: TAdvGlowButton; point_param_save_btn: TAdvGlowButton; AdvTabSheet8: TAdvTabSheet; AdvTabSheet9: TAdvTabSheet; AdvTabSheet10: TAdvTabSheet; Button1: TButton; Memo1: TMemo; Button2: TButton; AdvTabSheet11: TAdvTabSheet; Admin_pp_DBGrid: TDBAdvGrid; procedure general_navbarChange(Sender: TObject); procedure look_results_btnClick(Sender: TObject); procedure admin_btnClick(Sender: TObject); procedure general_pcChange(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TimeTimerTimer(Sender: TObject); procedure checkTimerTimer(Sender: TObject); procedure FormShow(Sender: TObject); procedure GoToNewMeasureExecute(Sender: TObject); procedure GoToLookResultsExecute(Sender: TObject); procedure GoToAdminExecute(Sender: TObject); procedure new_measure_btnClick(Sender: TObject); procedure Show_points_tableExecute(Sender: TObject); procedure Add_pointExecute(Sender: TObject); procedure ImageFileOpenBeforeExecute(Sender: TObject); procedure point_image_label_loadClick(Sender: TObject); procedure point_param_save_btnClick(Sender: TObject); procedure Admin_PCChange(Sender: TObject); procedure Enable_allExecute(Sender: TObject); procedure point_param_reset_btnClick(Sender: TObject); procedure Del_pointExecute(Sender: TObject); procedure Admin_pp_DBGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure Admin_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); procedure Admin_PCChanging(Sender: TObject; var AllowChange: Boolean); procedure general_pcChanging(Sender: TObject; var AllowChange: Boolean); procedure ImageFileOpenOpenDialogClose(Sender: TObject); procedure Show_params_tableExecute(Sender: TObject); procedure Add_paramExecute(Sender: TObject); procedure Del_paramExecute(Sender: TObject); procedure look_results_pcChanging(Sender: TObject; var AllowChange: Boolean); procedure New_izm_pcChanging(Sender: TObject; var AllowChange: Boolean); procedure Red_pointExecute(Sender: TObject); procedure Red_paramExecute(Sender: TObject); procedure New_izm_pcChange(Sender: TObject); procedure Show_all_patExecute(Sender: TObject); procedure new_izm_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); Procedure Col_resize(grid:TDBAdvGrid; name,header:string; width:integer); procedure New_izm_DB_GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure new_izm_DBMemo_primSelectionChange(Sender: TObject); procedure new_patientExecute(Sender: TObject); procedure enable_disable_new_izm_controls(dir:boolean); procedure new_izm_reset_btnClick(Sender: TObject); procedure new_izm_save_btnClick(Sender: TObject); procedure del_patientExecute(Sender: TObject); procedure red_patientExecute(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure look_res_choise_uncheck_allMouseEnter(Sender: TObject); procedure look_res_choise_uncheck_allMouseLeave(Sender: TObject); procedure look_res_choise_check_allMouseEnter(Sender: TObject); procedure look_res_choise_check_allMouseLeave(Sender: TObject); procedure look_res_choise_uncheck_allClick(Sender: TObject); procedure look_res_choise_check_allClick(Sender: TObject); procedure look_results_pcChange(Sender: TObject); procedure look_results_DB_GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure look_results_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); procedure look_res_choise_izmClick(Sender: TObject); procedure look_res_choise_defaults; procedure look_res_choise_izmExit(Sender: TObject); procedure look_res_load_dataExecute(Sender: TObject); procedure look_res_choise_load_dataClick(Sender: TObject); procedure create_series(allow:boolean; name,num,izm_num:string; x_array:array of integer; scale:extended); procedure look_res_graph_chooseClick(Sender: TObject); procedure look_res_graph_chartMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure look_res_graph_params_chooseClick(Sender: TObject); procedure look_res_show_15Execute(Sender: TObject); procedure new_izm_look_red_btnClick(Sender: TObject); procedure new_izm_begin_izm_btnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure N10Click(Sender: TObject); procedure Begin_izmExecute(Sender: TObject); private { Private declarations } public var device: TDevice;{ Public declarations } lock_pc_look:boolean; ///переменная включающая режим блокирования //изменения pagecontrol'a просмотра результатов end; var MainForm: TMainForm; db_grid_cur_row_num:integer; admin_db_cur_table:string; lock_pc:boolean; //переменная включающая режим блокирования изменения всех pageconrol'ov act:string; implementation uses DataUnit, ConstUnit, IzmUnit; {$R *.dfm} procedure TMainForm.checkTimerTimer(Sender: TObject); begin //Проверка на подключение к базе //проверка на подключение к прибору end; procedure TMainForm.FormShow(Sender: TObject); begin ConstUnit.tp_admin_init_load; MainForm.general_pcChange(self); lock_pc:=false; act:=''; end; procedure TMainForm.general_pcChange(Sender: TObject); begin if MainForm.general_pc.ActivePageIndex=0 then begin MainForm.GoToNewMeasure.Execute; tp_change(New_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,-1,true); end; if MainForm.general_pc.ActivePageIndex=1 then begin MainForm.GoToLookResults.Execute; tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,1,-1,true); end; if MainForm.general_pc.ActivePageIndex=2 then begin MainForm.GoToAdmin.Execute; tp_change(Admin_TP, MainForm.admin_pc.ActivePageIndex,1,-1,true); end; end; procedure TMainForm.Button1Click(Sender: TObject); begin // end; procedure TMainForm.Button2Click(Sender: TObject); begin Device.Start_waiting(2); end; //////////////////////////////////////////////////////////////////////////////// //процедуры панели НОВОЕ ИЗМЕРЕНИЕ // //////////////////////////////////////////////////////////////////////////////// procedure TMainForm.Begin_izmExecute(Sender: TObject); begin if Device.IsConnected then begin IzmForm.Caption:=izm_form_name; IzmForm.ShowModal; if Device.IsPortOpened then IzmForm.Izm_condition_label.Caption:=izm_device_ready; Device.Start_waiting(2);// запускаем поток IzmForm.Update; end; end; procedure TMainForm.New_izm_DB_GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if MainForm.New_izm_DB_Grid.Cells[1,Arow]<>'' then begin db_grid_cur_row_num:=Arow; //Showmessage(inttostr(db_grid_cur_row_num)); new_izm_pat_id.Caption:=MainForm.New_izm_DB_Grid.Cells[1,Arow]; //фамилия имя отчество MainForm.new_izm_fam_znach.Caption:=MainForm.New_izm_DB_Grid.Cells[2,Arow]; MainForm.new_izm_name_znach.Caption:=MainForm.New_izm_DB_Grid.Cells[3,Arow]; MainForm.new_izm_otch_znach.Caption:=MainForm.New_izm_DB_Grid.Cells[4,Arow]; //дата рождения MainForm.new_izm_date_znach.Caption:=MainForm.New_izm_DB_Grid.Cells[5,Arow]+ '.'+MainForm.New_izm_DB_Grid.Cells[6,Arow]+'.'+ MainForm.New_izm_DB_Grid.Cells[7,Arow]+'г.'; //примечания: with new_izm_DBMemo_prim do begin DataSource:=SQL_DM.mysql_DSQ2; DataField:='opisanie'; end; //количество измерений: mysql_query(SQL_DM.mysql_query1, 'SELECT Count(*) FROM `'+table_izm_name+ '` WHERE `patient_num`='+MainForm.New_izm_DB_Grid.Cells[1,Arow],1); MainForm.new_izm_kol_znach.Caption:=SQL_DM.mysql_DSQ1.DataSet. FieldByName('Count(*)').AsString; if MainForm.new_izm_kol_znach.Caption<>'0' then begin new_izm_look_red_btn.Enabled:=true; end else new_izm_look_red_btn.Enabled:=false; tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,2,true); tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,3,true); tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,0,0,true); new_izm_begin_izm_btn.Enabled:=true; //tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,0,1,true); end; end; procedure TMainForm.new_izm_look_red_btnClick(Sender: TObject); var can:boolean; begin can:=true; //если результат 1 то напрямую на просмотр //если много, то на страниу выбора измерения if strtoint(new_izm_kol_znach.Caption)>1 then begin MainForm.GoToLookResults.Execute; MainForm.Show_all_pat.Execute; tp_change(look_results_TP, 0,-1,-1,false); look_results_DB_GridSelectCell(self, 0, strtoint(new_izm_pat_id.Caption), can); end else begin mysql_query(SQL_DM.mysql_query1, 'SELECT `id` FROM `'+table_izm_name+ '` WHERE `patient_num`='+new_izm_pat_id.Caption,1); with look_res_choise_izm do begin Items.clear; Items.Add; Items[0].SubItems[0]:=(SQL_DM.mysql_DSQ1.DataSet.FieldByName('id').AsString); SelectFirst; end; MainForm.look_res_load_data.Execute; end; end; procedure TMainForm.New_izm_pcChange(Sender: TObject); begin tp_change(New_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,-1,true); end; //ТАКЖЕ ВЫПОЛНЯЕТСЯ И ПРИ ПРОСМОТРЕ РЕЗУЛЬАТАТОВ!!!! procedure TMainForm.Show_all_patExecute(Sender: TObject); var sel:boolean; grid:TDbAdvGrid; begin grid:=nil; if (MainForm.general_pc.ActivePageIndex=0) and (MainForm.New_izm_pc.ActivePageIndex=0) then grid:=New_izm_DB_Grid; if (MainForm.general_pc.ActivePageIndex=1) and (MainForm.New_izm_pc.ActivePageIndex=0) then grid:=look_results_DB_Grid; db_grid_cur_row_num:=-1; mysql_query(SQL_DM.mysql_query2, 'SELECT * FROM '+table_patient_name+';', 1); with SQL_DM.mysql_DSQ2 do begin Enabled:=false; DataSet:=SQL_DM.mysql_query2; Enabled:=true; end; with grid do begin DataSource:=SQL_DM.mysql_DSQ2; Col_resize(grid, 'id', new_izm_num_name, 15); Col_resize(grid, 'fam', new_izm_fam_name, 100); Col_resize(grid, 'name', new_izm_name_name, 100); Col_resize(grid, 'otch', new_izm_otch_name, 100); Col_resize(grid, 'day', new_izm_day_name, 40); Col_resize(grid, 'mon', new_izm_mon_name, 40); Col_resize(grid, 'year', new_izm_year_name, 40); Col_resize(grid, 'opisanie', new_izm_opis_name, 100); Enabled:=true; end; sel:=true; if grid.Name='New_izm_DB_Grid' then MainForm.New_izm_DB_GridSelectCell(self,1,1, sel); if grid.Name='look_results_DB_Grid' then MainForm.look_results_DB_GridSelectCell(self,1,1, sel); end; procedure TMainForm.new_patientExecute(Sender: TObject); begin enable_disable_new_izm_controls(false); //доступная только панель ввода act:='add'; //передергивание используется для фикса бага с курсором SQL_DM.mysql_query3.Active:=false; SQL_DM.mysql_query3.Active:=true; end; procedure TMainForm.red_patientExecute(Sender: TObject); var str: string; begin enable_disable_new_izm_controls(false); //доступная только панель ввода act:='update'; new_izm_fam_edit.Text:=new_izm_fam_znach.Caption; new_izm_name_edit.Text:=new_izm_name_znach.Caption; new_izm_otch_edit.Text:=new_izm_otch_znach.Caption; str:=new_izm_date_znach.Caption; delete(str, length(str)-1,2); new_izm_date_picker.Date:=strtodate(str); new_izm_edit_memo.Lines:=new_izm_DBMemo_prim.Lines; //передергивание используется для фикса бага с курсором SQL_DM.mysql_query3.Active:=false; SQL_DM.mysql_query3.Active:=true; end; procedure TMainForm.del_patientExecute(Sender: TObject); begin //удаление пациента try mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_patient_name+ '` WHERE `id`='+MainForm.New_izm_DB_Grid.cells[1,db_grid_cur_row_num]+';',2); finally MainForm.Show_all_pat.Execute; MessageBox(0, PChar(del_pat_from_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end; procedure TMainForm.new_izm_reset_btnClick(Sender: TObject); begin enable_disable_new_izm_controls(true); end; procedure TMainForm.new_izm_save_btnClick(Sender: TObject); var day,mon,year:string; stream:TMemoryStream; begin day:=datetostr(new_izm_date_picker.Date)[1]+datetostr(new_izm_date_picker.Date)[2]; mon:=datetostr(new_izm_date_picker.Date)[4]+datetostr(new_izm_date_picker.Date)[5]; year:=datetostr(new_izm_date_picker.Date)[7]+datetostr(new_izm_date_picker.Date)[8]+ datetostr(new_izm_date_picker.Date)[9]+datetostr(new_izm_date_picker.Date)[10]; if act='add' then begin //сохраняем информацию из полей в базу: //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT * FROM '+table_patient_name+';', 1); try SQL_DM.mysql_DSQ2.DataSet:=SQL_DM.mysql_query2; with SQL_DM.mysql_DSQ2.DataSet do begin Active:=true; Append; stream := TMemoryStream.Create; new_izm_edit_memo.Lines.SaveToStream(stream); (FieldByName('opisanie') as TBlobField).LoadFromStream(Stream); FieldByName('fam').AsString:=new_izm_fam_edit.Text; FieldByName('name').AsString:=new_izm_name_edit.Text; FieldByName('otch').AsString:=new_izm_otch_edit.Text; FieldByName('day').AsString:=day; FieldByName('mon').AsString:=mon; FieldByName('year').AsString:=year; Post; end; stream.Free; finally MainForm.enable_disable_new_izm_controls(true); MainForm.Show_all_pat.Execute; MessageBox(0, PChar(add_pat_to_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end else if act='update' then begin //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT * FROM '+table_patient_name+ ' WHERE `id`='+MainForm.New_izm_DB_Grid.cells[1,db_grid_cur_row_num]+';', 1); try with SQL_DM.mysql_DSQ2.DataSet do begin Edit; stream := TMemoryStream.Create; new_izm_edit_memo.Lines.SaveToStream(stream); (FieldByName('opisanie') as TBlobField).LoadFromStream(Stream); FieldByName('fam').AsString:=new_izm_fam_edit.Text; FieldByName('name').AsString:=new_izm_name_edit.Text; FieldByName('otch').AsString:=new_izm_otch_edit.Text; FieldByName('day').AsString:=day; FieldByName('mon').AsString:=mon; FieldByName('year').AsString:=year; UpdateRecord; Post; end; stream.Free; finally MainForm.enable_disable_new_izm_controls(true); MainForm.Show_all_pat.Execute; MessageBox(0, PChar(red_pat_in_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end end; procedure TMainForm.new_izm_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); begin if New_izm_TP.Sections[SectionIndex].SectionItems[ItemIndex].Enabled then if MainForm.New_izm_PC.ActivePageIndex=0 then //активная панель измерение begin case SectionIndex of 0: begin if ItemIndex=0 then MainForm.Begin_izm.Execute; if ItemIndex=1 then //MainForm.Show_params_table.Execute; end; 1: begin if ItemIndex=0 then MainForm.Show_all_pat.Execute; if ItemIndex=1 then MainForm.New_patient.Execute; if ItemIndex=2 then MainForm.red_patient.Execute; if ItemIndex=3 then MainForm.del_patient.Execute; end; 2: begin // if ItemIndex=0 then MainForm.Add_param.Execute; // if ItemIndex=1 then MainForm.Red_param.Execute; // if ItemIndex=2 then MainForm.Del_param.Execute; end; end; end; end; procedure TMainForm.new_izm_begin_izm_btnClick(Sender: TObject); begin MainForm.Begin_izm.Execute; end; procedure TMainForm.new_izm_DBMemo_primSelectionChange(Sender: TObject); begin new_izm_DBMemo_prim.Selection:=''; end; procedure TMainForm.enable_disable_new_izm_controls(dir:boolean); begin MainForm.New_izm_DB_Grid.Enabled := dir; MainForm.general_navbar.Enabled := dir; MainForm.admin_btn.Enabled := dir; MainForm.look_results_btn.Enabled := dir; MainForm.new_measure_btn.Enabled := dir; new_izm_begin_izm_btn.Enabled := dir; Panel5.Enabled := dir; new_izm_fam_edit.Enabled :=not dir; new_izm_fam_edit.Clear; new_izm_name_edit.Enabled :=not dir; new_izm_name_edit.Clear; new_izm_otch_edit.Enabled :=not dir; new_izm_otch_edit.Clear; new_izm_date_picker.Enabled :=not dir; new_izm_date_picker.date:=strtodate('01.01.1940'); new_izm_prim_edit_label.Enabled :=not dir; new_izm_date_edit_label.Enabled :=not dir; new_izm_edit_memo.Enabled :=not dir; new_izm_edit_memo.Clear; new_izm_save_btn.Enabled :=not dir; new_izm_reset_btn.Enabled :=not dir; lock_pc:=not dir; if dir then act:=''; end; //////////////////////////////////////////////////////////////////////////////// //процедуры панели ПРОСМОТР РЕЗУЛЬТАТОВ // //////////////////////////////////////////////////////////////////////////////// procedure TMainForm.look_res_choise_check_allClick(Sender: TObject); var i:integer; begin for i:=0 to look_res_choise_graph_opt.Items.Count-1 do look_res_choise_graph_opt.Checked[i]:=true; end; procedure TMainForm.look_res_choise_check_allMouseEnter(Sender: TObject); begin look_res_choise_check_all.Font.Style:=[fsUnderline]; end; procedure TMainForm.look_res_choise_check_allMouseLeave(Sender: TObject); begin look_res_choise_check_all.Font.Style:=[]; end; procedure TMainForm.look_res_choise_uncheck_allClick(Sender: TObject); var i:integer; begin for i:=0 to look_res_choise_graph_opt.Items.Count-1 do look_res_choise_graph_opt.Checked[i]:=false; end; procedure TMainForm.look_res_choise_uncheck_allMouseEnter(Sender: TObject); begin look_res_choise_uncheck_all.Font.Style:=[fsUnderline]; end; procedure TMainForm.look_res_choise_uncheck_allMouseLeave(Sender: TObject); begin look_res_choise_uncheck_all.Font.Style:=[]; end; procedure TMainForm.look_res_graph_chartMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin //look_res_graph_chart.ZoomRect(); end; procedure TMainForm.look_res_graph_chooseClick(Sender: TObject); begin if (look_res_graph_choose.ItemIndex=0) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=true; SeriesList.Items[1].Visible:=false; SeriesList.Items[2].Visible:=false; SeriesList.Items[3].Visible:=false; SeriesList.Items[4].Visible:=false; SeriesList.Items[5].Visible:=false; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Сопротивление БАТ, МОм'); CustomAxes.Items[0].Visible:=true; end; end; if (look_res_graph_choose.ItemIndex=1) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=false; SeriesList.Items[1].Visible:=true; SeriesList.Items[2].Visible:=false; SeriesList.Items[3].Visible:=false; SeriesList.Items[4].Visible:=false; SeriesList.Items[5].Visible:=false; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Проводиость БАТ, 1/Ом*10^6'); end; end; if (look_res_graph_choose.ItemIndex=2) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=false; SeriesList.Items[1].Visible:=false; SeriesList.Items[2].Visible:=true; SeriesList.Items[3].Visible:=false; SeriesList.Items[4].Visible:=false; SeriesList.Items[5].Visible:=false; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Проводиость БАТ, 1-ая гармоника, 1/Ом*10^6'); end; end; if (look_res_graph_choose.ItemIndex=3) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=false; SeriesList.Items[1].Visible:=false; SeriesList.Items[2].Visible:=false; SeriesList.Items[3].Visible:=true; SeriesList.Items[4].Visible:=false; SeriesList.Items[5].Visible:=false; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Проводиость БАТ, 2-ая гармоника, 1/Ом*10^6'); end; end; if (look_res_graph_choose.ItemIndex=4) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=false; SeriesList.Items[1].Visible:=false; SeriesList.Items[2].Visible:=false; SeriesList.Items[3].Visible:=false; SeriesList.Items[4].Visible:=true; SeriesList.Items[5].Visible:=false; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Проводиость БАТ, 3-ая гармоника, 1/Ом'); end; end; if (look_res_graph_choose.ItemIndex=5) then begin with look_res_graph_chart do begin SeriesList.Items[0].Visible:=false; SeriesList.Items[1].Visible:=false; SeriesList.Items[2].Visible:=false; SeriesList.Items[3].Visible:=false; SeriesList.Items[4].Visible:=false; SeriesList.Items[5].Visible:=true; Axes.Left.AdjustMaxMin; Title.Visible:=true; Title.Text.Clear; Title.Text.Append('Емкость БАТ, нФ'); end; end; end; procedure TMainForm.look_res_graph_params_chooseClick(Sender: TObject); begin if (look_res_graph_params_choose.Checked[0]=true) then MainForm.look_res_show_15.Execute else MainForm.look_res_hide_15.Execute; if (look_res_graph_params_choose.Checked[1]=true) then MainForm.look_res_show_max.Execute else MainForm.look_res_hide_max.Execute; if (look_res_graph_params_choose.Checked[2]=true) then MainForm.look_res_show_min.Execute else MainForm.look_res_hide_min.Execute; if (look_res_graph_params_choose.Checked[3]=true) then MainForm.look_res_show_mean.Execute else MainForm.look_res_hide_mean.Execute; end; procedure TMainForm.look_res_load_dataExecute(Sender: TObject); var //znach_kol, povtor, points_kol, i: Integer; izm_num:string; x_array: array [0..120] of integer; series_create:array [0..5] of boolean; begin MainForm.GoToLookResults.Execute; lock_pc_look:=false; // look_results_pc.ActivePageIndex:=2; tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,1,-1,true); // look_results_DB_Grid.Enabled:=false; // izm_num:=look_res_choise_izm.Selected.SubItems[0]; //начинаем загрузку данных в график //очищаем все что есть look_res_graph_chart.SeriesList.Clear; look_res_graph_choose.Items.Clear; //считываем какие из параметров будут показываться for i:=0 to 5 do if look_res_choise_graph_opt.Checked[i]=true then series_create[i]:=true else series_create[i]:=false; //определяем количество отсчетов по х, то есть сколько точек и сколько повторов mysql_query(SQL_DM.mysql_query1, 'SELECT Count(*) FROM `'+table_znacheniya_name+ '` WHERE `izm_num`='+izm_num,1); //znach_kol:= SQL_DM.mysql_DSQ1.DataSet.FieldByName('Count(*)').AsInteger; mysql_query(SQL_DM.mysql_query1, 'SELECT MAX(povtor_num) FROM `'+table_znacheniya_name+ '` WHERE `izm_num`='+izm_num,1); //povtor:=SQL_DM.mysql_DSQ1.DataSet.FieldByName('MAX(povtor_num)').AsInteger; //points_kol:=round(znach_kol/povtor/6); //формируем массив по х for i:=0 to 120 do x_array[i]:=i; look_res_graph_chart.SeriesList.Clear; //определяем состав группы управления графиками, а также добавляем серии create_series(series_create[0],'R','3',izm_num,x_array,1/1000000); create_series(series_create[1],'G0','4',izm_num,x_array,1000000); create_series(series_create[2],'G1','5',izm_num,x_array,1000000); create_series(series_create[3],'G2','6',izm_num,x_array,1000000); create_series(series_create[4],'G3','7',izm_num,x_array,1); create_series(series_create[5],'C','8',izm_num,x_array,1000000000); look_res_graph_choose.ItemIndex:=0; look_res_graph_chart.Axes.Left.Automatic:=true; // end; procedure TMainForm.look_res_show_15Execute(Sender: TObject); begin // end; procedure TMainForm.N10Click(Sender: TObject); begin MainForm.Close; end; procedure TMainForm.look_results_pcChange(Sender: TObject); begin tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,1,-1,true); if MainForm.look_results_pc.ActivePageIndex=3 then begin tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,0,false); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,1,false); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,2,false); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,3,false); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,4,false); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,5,false); end; end; procedure TMainForm.look_results_DB_GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var i:integer; begin if MainForm.look_results_DB_Grid.Cells[1,Arow]<>'' then begin db_grid_cur_row_num:=Arow; //фамилия имя отчество MainForm.look_res_choise_fam_znach.Caption:=MainForm.look_results_DB_Grid.Cells[2,Arow]; MainForm.look_res_choise_name_znach.Caption:=MainForm.look_results_DB_Grid.Cells[3,Arow]; MainForm.look_res_choise_otch_znach.Caption:=MainForm.look_results_DB_Grid.Cells[4,Arow]; //дата рождения MainForm.look_res_choise_date_znach.Caption:=MainForm.look_results_DB_Grid.Cells[5,Arow]+ '.'+MainForm.look_results_DB_Grid.Cells[6,Arow]+'.'+ MainForm.look_results_DB_Grid.Cells[7,Arow]+'г.'; //примечания: with look_res_choise_memo do begin DataSource:=SQL_DM.mysql_DSQ2; DataField:='opisanie'; end; //количество измерений: SQL_DM.mysql_DSQ1.DataSet:=SQL_DM.mysql_query1; mysql_query(SQL_DM.mysql_query1, 'SELECT Count(*) FROM `'+table_izm_name+ '` WHERE `patient_num`='+MainForm.look_results_DB_Grid.Cells[1,Arow],1); MainForm.look_res_choise_izm_kol.Caption:=SQL_DM.mysql_DSQ1.DataSet. FieldByName('Count(*)').AsString; if MainForm.look_res_choise_izm_kol.Caption<>'0' then begin //new_izm_look_red_btn.Enabled:=true; end; //даты измерений: mysql_query(SQL_DM.mysql_query5, 'SELECT `date`, `id` FROM `'+table_izm_name+ '` WHERE `patient_num`='+MainForm.look_results_DB_Grid.Cells[1,Arow],1); SQL_DM.mysql_DSQ5.DataSet:=SQL_DM.mysql_query5; SQL_DM.mysql_DSQ5.DataSet.First; i:=0; look_res_choise_izm.Items.Clear; while not SQL_DM.mysql_DSQ5.DataSet.Eof do begin look_res_choise_izm.Items.Add; look_res_choise_izm.Items[i].Caption:=SQL_DM.mysql_DSQ5.DataSet.FieldByName('date').AsString; look_res_choise_izm.Items[i].SubItems.Add(SQL_DM.mysql_DSQ5.DataSet.FieldByName('id').AsString); inc(i); SQL_DM.mysql_DSQ5.DataSet.Next; end; SQL_DM.mysql_DSQ5.DataSet:=nil; //tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,2,true); //tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,3,true); //new_izm_begin_izm_btn.Enabled:=true; //tp_change(new_izm_TP, MainForm.New_izm_pc.ActivePageIndex,0,1,true); end; end; procedure TMainForm.look_results_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); begin if look_results_TP.Sections[SectionIndex].SectionItems[ItemIndex].Enabled then if MainForm.look_results_pc.ActivePageIndex=0 then //активная панель выбора информации begin case SectionIndex of 0: begin if ItemIndex=0 then MainForm.Show_all_pat.Execute; if ItemIndex=1 then look_res_choise_defaults; end; 1: begin if ItemIndex=0 then look_res_choise_load_dataClick(self); end; end; end; if MainForm.look_results_pc.ActivePageIndex=2 then //активная панель графиков begin case SectionIndex of 0: begin if ItemIndex=0 then look_res_graph_choose.ItemIndex:=0; if ItemIndex=1 then look_res_graph_choose.ItemIndex:=1; if ItemIndex=2 then look_res_graph_choose.ItemIndex:=2; if ItemIndex=3 then look_res_graph_choose.ItemIndex:=3; if ItemIndex=4 then look_res_graph_choose.ItemIndex:=4; if ItemIndex=5 then look_res_graph_choose.ItemIndex:=5; MainForm.look_res_graph_chooseClick(self); end; 1: begin // if ItemIndex=0 then look_res_choise_load_dataClick(self); end; end; end; end; procedure TMainForm.look_res_choise_izmClick(Sender: TObject); begin if look_res_choise_izm.Selected<>nil then begin mysql_query(SQL_DM.mysql_query4, 'SELECT `opisanie` FROM `'+table_izm_name+ '` WHERE `id`='+look_res_choise_izm.Selected.SubItems[0],1); SQL_DM.mysql_DSQ4.DataSet:=SQL_DM.mysql_query4; look_res_choise_izm_memo.DataSource:= SQL_DM.mysql_DSQ4; look_res_choise_izm_memo.DataField:='opisanie'; /// проблема с выходом из листа и входом в панель действий, в панели /// действий пришлось убрать дествие "загрузить данные" //look_results_TP.Sections[1].SectionItems[0].Enabled:=true; look_res_choise_load_data.Enabled:=true; end; end; procedure TMainForm.create_series(allow:boolean; name,num,izm_num:string; x_array:array of integer; scale:extended); var i,j:integer; y_arrays: array [0..5,1..24,1..5] of double; ser:TPointSeries; begin if allow then begin look_res_graph_choose.Items.Add(name); tp_change(look_results_TP, MainForm.look_results_pc.ActivePageIndex,0,strtoint(num)-3,true); //загружаем значения для параметра for i:=1 to 24 do begin //пока упрощенно на все точки mysql_query(SQL_DM.mysql_query1, 'SELECT `znach` FROM `'+table_znacheniya_name+ '` WHERE (`izm_num`='+izm_num+' AND `param_num`='+num+' AND `point_num`='+ inttostr(i)+') ORDER BY `rd_znacheniya`.`povtor_num` ASC',1); SQL_DM.mysql_DSQ1.DataSet.First; for j:=1 to 5 do begin y_arrays[strtoint(num)-3,i,j]:=SQL_DM.mysql_DSQ1.DataSet.FieldByName('znach').AsFloat*scale; SQL_DM.mysql_DSQ1.DataSet.Next; end; end; ser:=TPointSeries.Create(self); ser.Clear; ser.AllowSinglePoint:=true; for i:=1 to 24 do for j:=1 to 5 do // ser.AddY(y_arrays[strtoint(num)-3,i,j],'',clRed); ser.AddXY(j/5+i-1,y_arrays[strtoint(num)-3,i,j],'',clRed); //CDS.Append; //CDS.FieldByName('label').Value:='dffgfd'; //CDS.Post; //CDS.FileName:='points'; //CDS.Active:=true; ser.ParentChart:=look_res_graph_chart; ser.ColorEachPoint:=true; ser.Pointer.Style:=psCircle; ser.Pointer.VertSize:=3; ser.Pointer.HorizSize:=3; ser.Visible:=true; //ser.XValues.ValueSource:='label'; //ser.DataSource:=CDS; //ser.CheckDataSource; look_res_graph_chart.AddSeries(ser); end; end; procedure TMainForm.look_res_choise_izmExit(Sender: TObject); begin look_res_choise_izm_memo.DataSource:=nil; //look_results_TP.Sections[1].SectionItems[0].Enabled:=false; look_res_choise_load_data.Enabled:=false; end; procedure TMainForm.look_res_choise_defaults; var i:integer; begin look_res_choise_show_data.Checked:=true; look_res_choise_show_report.Checked:=true; for i:=0 to 5 do look_res_choise_graph_opt.Checked[i]:=true; end; procedure TMainForm.look_res_choise_load_dataClick(Sender: TObject); begin MainForm.look_res_load_data.Execute; end; //////////////////////////////////////////////////////////////////////////////// //процедуры панели АДМИНИСТРИРОВАНИЕ // //////////////////////////////////////////////////////////////////////////////// procedure TMainForm.Admin_PCChange(Sender: TObject); begin tp_change(Admin_TP, MainForm.admin_pc.ActivePageIndex,1,-1,true); end; procedure TMainForm.Enable_allExecute(Sender: TObject); begin MainForm.Admin_pp_DBGrid.Enabled := true; pict.Enabled := true; MainForm.general_navbar.Enabled := true; MainForm.admin_btn.Enabled := true; MainForm.look_results_btn.Enabled := true; MainForm.new_measure_btn.Enabled := true; Point_param_SE.Enabled := false; point_param_name_edit.Enabled := false; point_param_name_edit.Clear; point_param_ops_edit.Enabled := false; point_param_ops_edit.Clear; point_image_label_load.Enabled:= false; point_image.Picture :=nil; point_param_save_btn.Enabled := false; point_param_reset_btn.Enabled := false; point_image.Enabled := false; point_param__ins_num_label.Enabled:=false; point_image_size_znach_label.Enabled:=false; point_image_size_znach.Enabled:= false; point_image_size_znach.Enabled:= false; point_image_label.Enabled := false; point_image_size_label.Enabled:= false; lock_pc:=false; end; procedure TMainForm.Admin_TPItemClick(Sender: TObject; SectionIndex, ItemIndex: Integer); begin if Admin_TP.Sections[SectionIndex].SectionItems[ItemIndex].Enabled then if MainForm.Admin_PC.ActivePageIndex=0 then //активная панель точек и параметров begin case SectionIndex of 0: begin if ItemIndex=0 then MainForm.Show_points_table.Execute; if ItemIndex=1 then MainForm.Show_params_table.Execute; end; 1: begin if ItemIndex=0 then MainForm.Add_point.Execute; if ItemIndex=1 then MainForm.Red_point.Execute; if ItemIndex=2 then MainForm.Del_point.Execute; end; 2: begin if ItemIndex=0 then MainForm.Add_param.Execute; if ItemIndex=1 then MainForm.Red_param.Execute; if ItemIndex=2 then MainForm.Del_param.Execute; end; end; end; end; procedure TMainForm.Admin_pp_DBGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var stream:TMemoryStream; begin //если в поле номера есть что-то if MainForm.Admin_pp_DBGrid.Cells[1,Arow]<>'' then //в зависимости от того активна какая-либо из точек делаем доступными //оперделенными действия begin //записываем текущее значение поля num if db_grid_cur_row_num<>strtoint(MainForm.Admin_pp_DBGrid.Cells[1,Arow]) then begin db_grid_cur_row_num:=strtoint(MainForm.Admin_pp_DBGrid.Cells[1,Arow]); //если открыта таблица точек if admin_db_cur_table='points' then begin //открываем действия редактирования и добавления точек tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,1,true); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,2,true); //закрываем действия для параметров tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,2,false); //показываем текущие данные о точке point_param_num_znach.Caption:=(MainForm.Admin_pp_DBGrid.Cells[1,Arow]); point_param_name_znach.Caption:=MainForm.Admin_pp_DBGrid.Cells[2,Arow]; point_param_opis_znach.Caption:=MainForm.Admin_pp_DBGrid.Cells[3,Arow]; try //загружаем изображение в отдельный запрос mysql_query(SQL_DM.mysql_query1,'SELECT `image` FROM '+table_points_name+' WHERE `num`='+ MainForm.Admin_pp_DBGrid.Cells[1,Arow]+';',1); SQL_DM.mysql_DSQ1.DataSet:=SQL_DM.mysql_query1; Pict.Picture:=nil; stream := TMemoryStream.Create; (SQL_DM.mysql_DSQ1.DataSet.fieldbyname('image') as TBlobField).SaveToStream(stream); {что бы что-нибудь записать, необходимо установить позицию потока в ноль!} Stream.Position := 0; pict.Picture.LoadFromStream(stream); stream.Free; except end; if pict.Picture<>nil then pict.Show; end; //если открыта таблица параметров if admin_db_cur_table='params' then begin tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,1,true); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,2,true); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,2,false); //показываем текущие данные о параметре point_param_num_znach.Caption:=(MainForm.Admin_pp_DBGrid.Cells[1,Arow]); point_param_name_znach.Caption:=MainForm.Admin_pp_DBGrid.Cells[2,Arow]; point_param_opis_znach.Caption:=MainForm.Admin_pp_DBGrid.Cells[3,Arow]; end; end; end else //если нет, то делаем недоступными действия редактирования и добавления begin if admin_db_cur_table='points' then begin tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,2,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,2,false); end; if admin_db_cur_table='params' then begin tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,2,2,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,1,false); tp_change(Admin_tp, MainForm.Admin_PC.ActivePageIndex,1,2,false); end; end; end; procedure TMainForm.point_image_label_loadClick(Sender: TObject); begin MainForm.ImageFileOpen.Execute; try if ImageFileOpen.Dialog.FileName<>'' then MainForm.point_image.Picture.LoadFromFile(ImageFileOpen.Dialog.FileName); finally point_image_size_znach_label.Caption:=image_size_label+GetFileSize(ImageFileOpen.Dialog.FileName); end; end; procedure TMainForm.ImageFileOpenBeforeExecute(Sender: TObject); begin MainForm.ImageFileOpen.Dialog.InitialDir:=ExtractFilePath(Application.ExeName); end; procedure TMainForm.ImageFileOpenOpenDialogClose(Sender: TObject); begin ImageFileOpen.Dialog.FileName:=''; end; procedure TMainForm.point_param_save_btnClick(Sender: TObject); var stream:TMemoryStream; begin if (admin_db_cur_table='points') and (act='add') then begin //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT num, name, opisanie, image From '+table_points_name+';', 1); try with SQL_DM.mysql_DSQ2.DataSet do begin Append; stream := TMemoryStream.Create; point_image.picture.SaveToStream(stream); (FieldByName('image') as TBlobField).LoadFromStream(Stream); FieldByName('num').AsString:=inttostr(Point_param_SE.Value); FieldByName('opisanie').AsString:=point_param_ops_edit.Text; FieldByName('name').AsString:=point_param_name_edit.Text; Post; end; stream.Free; finally MainForm.Enable_all.Execute; MainForm.Show_points_table.Execute; MessageBox(0, PChar(add_point_to_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end else if (admin_db_cur_table='params') and (act='add') then begin //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT id, name, opisanie From '+table_param_name+';', 1); try with SQL_DM.mysql_DSQ2.DataSet do begin Append; FieldByName('id').AsString:=inttostr(Point_param_SE.Value); FieldByName('opisanie').AsString:=point_param_ops_edit.Text; FieldByName('name').AsString:=point_param_name_edit.Text; Post; end; finally MainForm.Enable_all.Execute; MainForm.Show_params_table.Execute; MessageBox(0, PChar(add_param_to_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end else if (admin_db_cur_table='points') and (act='update') then begin //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT num, name, opisanie, image From '+table_points_name+ ' WHERE `num`='+inttostr(Point_param_SE.Value)+';', 1); try with SQL_DM.mysql_DSQ2.DataSet do begin Edit; stream := TMemoryStream.Create; point_image.picture.SaveToStream(stream); (FieldByName('image') as TBlobField).LoadFromStream(Stream); FieldByName('num').AsString:=inttostr(Point_param_SE.Value); FieldByName('opisanie').AsString:=point_param_ops_edit.Text; FieldByName('name').AsString:=point_param_name_edit.Text; UpdateRecord; Post; end; stream.Free; finally MainForm.Enable_all.Execute; MainForm.Show_points_table.Execute; MessageBox(0, PChar(red_point_in_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end else if (admin_db_cur_table='params') and (act='update') then begin //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть mysql_query(SQL_DM.mysql_query2, 'SELECT id, name, opisanie From '+table_param_name+ ' WHERE `id`='+inttostr(Point_param_SE.Value)+';', 1); try with SQL_DM.mysql_DSQ2.DataSet do begin Edit; FieldByName('id').AsString:=inttostr(Point_param_SE.Value); FieldByName('opisanie').AsString:=point_param_ops_edit.Text; FieldByName('name').AsString:=point_param_name_edit.Text; UpdateRecord; Post; end; finally MainForm.Enable_all.Execute; MainForm.Show_params_table.Execute; MessageBox(0, PChar(red_param_in_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end; end; procedure TMainForm.point_param_reset_btnClick(Sender: TObject); begin Mainform.Enable_all.Execute; end; procedure TMainForm.Show_params_tableExecute(Sender: TObject); var sel:boolean; begin db_grid_cur_row_num:=-1; mysql_query(SQL_DM.mysql_query3, 'SELECT id, name, opisanie From '+table_param_name+';', 1); with SQL_DM.mysql_DSQ3 do begin Enabled:=false; DataSet:=SQL_DM.mysql_query3; Enabled:=true; end; with MainForm.Admin_pp_DBGrid do begin DataSource:=SQL_DM.mysql_DSQ3; Col_resize(Admin_pp_DBGrid, 'id', point_param_num_name, 45); Col_resize(Admin_pp_DBGrid, 'name', point_param_name_name, 100); Col_resize(Admin_pp_DBGrid, 'opisanie', point_param_opis_name_param, width-ColumnByFieldName['name'].Width- ColumnByFieldName['id'].Width- 50); Enabled:=true; end; sel:=true; admin_db_cur_table:='params'; point_param_name_znach.Caption:=''; point_param_opis_znach.Caption:=''; point_param_num_znach.Caption:=''; MainForm.Admin_pp_DBGridSelectCell(self,1,1, sel); pict .hide; point_image_label_load .hide; point_image_label .hide; point_image_size_label .hide; point_image_size_znach_label .Hide; point_param__ins_num_label.Caption:=''; Point_param_label.Caption:='Параметр №:'; end; procedure TMainForm. Add_paramExecute(Sender: TObject); begin MainForm.Show_params_table.Execute; MainForm.Admin_pp_DBGrid.Enabled := false; MainForm.general_navbar.Enabled := false; MainForm.admin_btn.Enabled := false; MainForm.look_results_btn.Enabled := false; MainForm.new_measure_btn.Enabled := false; point_param__ins_num_label.Enabled:=true; Point_param_SE.Enabled := true; point_param_name_edit.Enabled := true; point_param_ops_edit.Enabled := true; point_param_save_btn.Enabled := true; point_param_reset_btn.Enabled := true; lock_pc:=true; act:='add'; point_image_size_znach_label.Caption:=image_size_label; //устанавливаем минимальное значение номера параметра mysql_query(SQL_DM.mysql_query1, 'SELECT max(id) From '+table_param_name+';', 1); Point_param_SE.MinValue:=SQL_DM.mysql_DSQ1.DataSet.FieldByName('max(id)').AsInteger+1; Point_param_SE.MaxValue:=99; Point_param_SE.Value:=Point_param_SE.MinValue; end; procedure TMainForm. Red_paramExecute(Sender: TObject); begin //передергивание используется для фикса бага с курсором SQL_DM.mysql_query3.Active:=false; SQL_DM.mysql_query3.Active:=true; MainForm.Admin_pp_DBGrid.Enabled := false; MainForm.general_navbar.Enabled := false; MainForm.admin_btn.Enabled := false; MainForm.look_results_btn.Enabled := false; MainForm.new_measure_btn.Enabled := false; point_param__ins_num_label.Enabled:=true; point_param_name_edit.Enabled := true; point_param_ops_edit.Enabled := true; point_param_save_btn.Enabled := true; point_param_reset_btn.Enabled := true; lock_pc:=true; act:='update'; //копируем текущие значения в поля Point_param_SE.Value:=strtoint(point_param_num_znach.Caption); point_param_name_edit.Text:=point_param_name_znach.Caption; point_param_ops_edit.Text:=point_param_opis_znach.Caption; end; procedure TMainForm. Del_paramExecute(Sender: TObject); begin //удаление параметра try mysql_query(SQL_DM.mysql_query1, 'DELETE FROM `'+table_param_name+ '` WHERE `id`='+inttostr(db_grid_cur_row_num)+';',2); finally MainForm.Show_params_table.Execute; MessageBox(0, PChar(del_param_from_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end; procedure TMainForm.Show_points_tableExecute(Sender: TObject); var sel:boolean; begin db_grid_cur_row_num:=-1; mysql_query(SQL_DM.mysql_query3, 'SELECT num, name, opisanie, image FROM '+table_points_name+';', 1); with SQL_DM.mysql_DSQ3 do begin Enabled:=false; DataSet:=SQL_DM.mysql_query3; Enabled:=true; end; with MainForm.Admin_pp_DBGrid do begin DataSource:=SQL_DM.mysql_DSQ3; ColumnByFieldName['image'].Destroy; Col_resize(Admin_pp_DBGrid, 'num', point_param_num_name, 45); Col_resize(Admin_pp_DBGrid, 'name', point_param_name_name, 100); Col_resize(Admin_pp_DBGrid, 'opisanie', point_param_opis_name_point, width-ColumnByFieldName['name'].Width- ColumnByFieldName['num'].Width- 50); Enabled:=true; end; sel:=true; admin_db_cur_table:='points'; point_param_name_znach.Caption:=''; point_param_opis_znach.Caption:=''; point_param_num_znach.Caption:=''; MainForm.Admin_pp_DBGridSelectCell(self,1,1, sel); pict .Show; point_image_label_load .Show; point_image_label .Show; point_image_size_label .Show; point_image_size_znach_label .Show; point_param__ins_num_label.Caption:='Точка №:'; Point_param_label.Caption:='Точка №:'; end; procedure TMainForm. Add_pointExecute(Sender: TObject); begin MainForm.Show_points_table.Execute; MainForm.Admin_pp_DBGrid.Enabled := false; pict.Enabled := false; MainForm.general_navbar.Enabled := false; MainForm.admin_btn.Enabled := false; MainForm.look_results_btn.Enabled := false; MainForm.new_measure_btn.Enabled := false; Point_param_SE.Enabled := true; point_param_name_edit.Enabled := true; point_param_ops_edit.Enabled := true; point_image_label_load.Enabled:= true; point_param_save_btn.Enabled := true; point_param_reset_btn.Enabled := true; point_image.Enabled := true; point_param__ins_num_label.Enabled:=true; point_image_size_znach_label.Enabled:=true; point_image_size_znach.Enabled:= true; point_image_label.Enabled := true; point_image_size_label.Enabled:= true; lock_pc:=true; act:='add'; point_image_size_znach_label.Caption:=image_size_label; //устанавливаем минимальное значение номера точки mysql_query(SQL_DM.mysql_query1, 'SELECT max(num) From '+table_points_name+';', 1); Point_param_SE.MinValue:=SQL_DM.mysql_DSQ1.DataSet.FieldByName('max(num)').AsInteger+1; Point_param_SE.MaxValue:=99; Point_param_SE.Value:=Point_param_SE.MinValue; end; procedure TMainForm. Red_pointExecute(Sender: TObject); var sel:boolean; begin //передергивание используется для фикса бага с курсором SQL_DM.mysql_query3.Active:=false; SQL_DM.mysql_query3.Active:=true; MainForm.Admin_pp_DBGrid.Enabled := false; pict.Enabled := false; MainForm.general_navbar.Enabled := false; MainForm.admin_btn.Enabled := false; MainForm.look_results_btn.Enabled := false; MainForm.new_measure_btn.Enabled := false; point_param_name_edit.Enabled := true; point_param_ops_edit.Enabled := true; point_image_label_load.Enabled:= true; point_param_save_btn.Enabled := true; point_param_reset_btn.Enabled := true; point_image.Enabled := true; point_param__ins_num_label.Enabled:=true; point_image_size_znach_label.Enabled:=true; point_image_size_znach.Enabled:= true; point_image_label.Enabled := true; point_image_size_label.Enabled:= true; lock_pc:=true; act:='update'; //копируем текущие значения в поля Point_param_SE.Value:=strtoint(point_param_num_znach.Caption); point_param_name_edit.Text:=point_param_name_znach.Caption; point_param_ops_edit.Text:=point_param_opis_znach.Caption; point_image.Picture:=pict.Picture; pict.Picture.SaveToFile('tmp'); point_image_size_znach_label.Caption:='Текущий размер: '+GetFileSize('tmp'); DeleteFile('tmp'); sel:=true; MainForm.Admin_pp_DBGridSelectCell(self,1,1, sel); end; procedure TMainForm. Del_pointExecute(Sender: TObject); begin //удаление точки try mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_points_name+ '` WHERE `num`='+inttostr(db_grid_cur_row_num)+';',2); finally MainForm.Show_points_table.Execute; MessageBox(0, PChar(del_point_from_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); end; end; /////////////////////////////////////////////////////////////////////////////// /// Общие процедуры интерфейса /////////////////////////////////////////////////////////////////////////////// procedure TMainForm.GoToAdminExecute(Sender: TObject); begin MainForm.admin_btn.Down:=true; MainForm.look_results_btn.Down:=false; MainForm.new_measure_btn.Down:=false; MainForm.general_pc.ActivePageIndex:=2; MainForm.general_navbar.ActiveTabIndex:=0; lock_pc_look:=false; ///требуется для снятия ограничений при перходе с панели /// просмотра результатов, поскольку там включен режим /// запрета смены вкладки tp_change(Admin_TP, MainForm.admin_pc.ActivePageIndex,1,-1,true); end; procedure TMainForm.GoToLookResultsExecute(Sender: TObject); begin MainForm.admin_btn.Down:=false; MainForm.look_results_btn.Down:=true; MainForm.new_measure_btn.Down:=false; MainForm.general_pc.ActivePageIndex:=1; MainForm.general_navbar.ActiveTabIndex:=1; look_res_choise_defaults; tp_change(look_results_TP, 0,1,-1,true); lock_pc_look:=true; ///ставим запрет смены вкладки пока не введено if look_results_DB_Grid.ColCount>2 then begin Col_resize(look_results_DB_Grid, 'id', new_izm_num_name, 15); Col_resize(look_results_DB_Grid, 'fam', new_izm_fam_name, 100); Col_resize(look_results_DB_Grid, 'name', new_izm_name_name, 100); Col_resize(look_results_DB_Grid, 'otch', new_izm_otch_name, 100); Col_resize(look_results_DB_Grid, 'day', new_izm_day_name, 40); Col_resize(look_results_DB_Grid, 'mon', new_izm_mon_name, 40); Col_resize(look_results_DB_Grid, 'year', new_izm_year_name, 40); Col_resize(look_results_DB_Grid, 'opisanie', new_izm_opis_name, 100); end; end; procedure TMainForm.GoToNewMeasureExecute(Sender: TObject); begin MainForm.admin_btn.Down:=false; MainForm.look_results_btn.Down:=false; MainForm.new_measure_btn.Down:=true; MainForm.general_pc.ActivePageIndex:=0; MainForm.general_navbar.ActiveTabIndex:=2; lock_pc_look:=false; tp_change(New_izm_TP, MainForm.New_izm_pc.ActivePageIndex,1,-1,true); if New_izm_DB_Grid.ColCount>2 then begin Col_resize(New_izm_DB_Grid, 'id', new_izm_num_name, 15); Col_resize(New_izm_DB_Grid, 'fam', new_izm_fam_name, 100); Col_resize(New_izm_DB_Grid, 'name', new_izm_name_name, 100); Col_resize(New_izm_DB_Grid, 'otch', new_izm_otch_name, 100); Col_resize(New_izm_DB_Grid, 'day', new_izm_day_name, 40); Col_resize(New_izm_DB_Grid, 'mon', new_izm_mon_name, 40); Col_resize(New_izm_DB_Grid, 'year', new_izm_year_name, 40); Col_resize(New_izm_DB_Grid, 'opisanie', new_izm_opis_name, 100); end; end; //переход в режим продвинутого пользователя procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If ((GetKeyState(VK_CONTROL) AND 128)=128) and ((GetKeyState(VK_menu) AND 128)=128) and ((GetKeyState(VK_shift) AND 128)=128) and ((GetKeyState(vk_f6) AND 128)=128) then ShowMessage('CTRL+F5+8 Pressed'); end; procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin // end; procedure TMainForm.FormCreate(Sender: TObject); begin device:=DeviceRD.TDevice.Create; Device.Open_device; Device.Start_waiting(1); end; //таймер на статус бар procedure TMainForm.TimeTimerTimer(Sender: TObject); var date_time: TDateTime; begin date_time:=today(); MainForm.StatusBar.Panels.Items[3].Text:='Сегодня ' +FormatDateTime('dd', date_time)+'.' +FormatDateTime('mm', date_time)+'.' +FormatDateTime('yyyy', date_time)+' ' +FormatDateTime('HH', date_time)+':' +FormatDateTime('nn', date_time); end; //процедуры запрета смены страницы в режиме блокировки procedure TMainForm.look_results_pcChanging(Sender: TObject; var AllowChange: Boolean); begin if lock_pc or lock_pc_look then AllowChange:=false; end; procedure TMainForm.New_izm_pcChanging(Sender: TObject; var AllowChange: Boolean); begin if lock_pc then AllowChange:=false; end; procedure TMainForm.Admin_PCChanging(Sender: TObject; var AllowChange: Boolean); begin if lock_pc then AllowChange:=false; end; procedure TMainForm.general_pcChanging(Sender: TObject; var AllowChange: Boolean); begin if lock_pc then AllowChange:=false; end; procedure TMainForm.admin_btnClick(Sender: TObject); begin MainForm.GoToAdmin.Execute; end; procedure TMainForm.new_measure_btnClick(Sender: TObject); begin MainForm.GoToNewMeasure.Execute; end; procedure TMainForm.look_results_btnClick(Sender: TObject); begin MainForm.GoToLookResults.Execute; end; procedure TMainForm.general_navbarChange(Sender: TObject); begin if MainForm.general_navbar.ActiveTabIndex=2 then MainForm.GoToNewMeasure.Execute; if MainForm.general_navbar.ActiveTabIndex=1 then MainForm.GoToLookResults.Execute; if MainForm.general_navbar.ActiveTabIndex=0 then MainForm.GoToAdmin.Execute; end; procedure TMainForm.Col_resize(grid:TDBAdvGrid; name,header:string; width:integer); begin grid.ColumnByFieldName[name].Width:=width; grid.ColumnByFieldName[name].Header:=header; grid.ColumnByFieldName[name].HeaderAlignment:=taCenter; grid.ColumnByFieldName[name].Alignment:=taCenter; end; end.