unit AdminUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, BaseGrid, DBAdvGrid, StdCtrls, AdvGlowButton, AdvEdit, Spin, AdvPicture, ExtCtrls, AdvPageControl, ComCtrls, DB, StdActns, ExtActns, ActnList, ExtDlgs, AdvPanel, AdvGrid, Jpeg; type TAdminForm = class(TForm) 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; 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; ActionList: TActionList; Show_points_table: TAction; Show_params_table: TAction; Add_point: TAction; Add_param: TAction; Del_point: TAction; ImageFileOpen: TOpenPicture; Del_param: TAction; Red_point: TAction; Red_param: TAction; Initial_load: TAction; Admin_add_point_param: TAdvGlowButton; Admin_del_point_param: TAdvGlowButton; Admin_red_point_param: TAdvGlowButton; Admin_navigate_panel: TAdvPanelGroup; Panel3: TPanel; Panel4: TPanel; Admin_show_points_panel: TAdvPanel; Admin_show_params_panel: TAdvPanel; Admin_show_measure_panel: TAdvPanel; Admin_show_points_label: TLabel; Admin_show_params_label: TLabel; Admin_show_measure_label: TLabel; default_points_params: TAdvGlowButton; Make_default: TAction; procedure Show_points_tableExecute(Sender: TObject); procedure Add_pointExecute(Sender: TObject); procedure point_image_label_loadClick(Sender: TObject); procedure point_param_save_btnClick(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 Show_params_tableExecute(Sender: TObject); procedure Add_paramExecute(Sender: TObject); procedure Del_paramExecute(Sender: TObject); procedure Red_pointExecute(Sender: TObject); procedure Red_paramExecute(Sender: TObject); procedure Initial_loadExecute(Sender: TObject); procedure FormShow(Sender: TObject); procedure Admin_pp_DBGridDblClickCell(Sender: TObject; ARow, ACol: Integer); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure Admin_pp_DBGridKeyPress(Sender: TObject; var Key: Char); procedure Admin_show_points_labelClick(Sender: TObject); procedure Admin_show_params_labelClick(Sender: TObject); procedure ImageFileOpenAccept(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure GetResourceAsJpeg(const resname: string; AInstance: Cardinal; aImage: TAdvPicture); procedure Make_defaultExecute(Sender: TObject); private { Private declarations } public admin_db_cur_table:string; //точки или параметры{ Public declarations } db_grid_cur_row_num:integer; //текущий ряд таблички act:string; //действие для кнопки сохранить //варианты - сохранение и обновление backrow:integer; // номер ряда на который пойдет возвращение end; var AdminForm: TAdminForm; implementation uses MainUnit, DataUnit, ConstUnit; {$R *.dfm} //////////////////////////////// /// ОБЩИЕ ПРОЦЕДУРЫ ФОРМЫ /// //////////////////////////////// procedure TAdminForm.FormClose(Sender: TObject; var Action: TCloseAction); begin MainForm.Show_all_pat.Execute; end; procedure TAdminForm.FormKeyPress(Sender: TObject; var Key: Char); begin // при нажатии Esc if key=#27 then begin // в случае если не происходит добавления или редактирования точки/параметрыа // закрываем форму if act='' then begin AdminForm.CloseModal; AdminForm.Close; end //если происходит то возращаемся к исходному состоянию else if admin_db_cur_table='points' then Show_points_table.Execute else if admin_db_cur_table='params' then Show_params_table.Execute; //нажатие f5 на таблице - обновление if (GetKeyState(vk_f5) AND 128)=128 then if admin_db_cur_table='points' then Show_points_table.Execute else if admin_db_cur_table='params' then Show_params_table.Execute; end; end; procedure TAdminForm.FormShow(Sender: TObject); begin //пока не сделано: инициализация переменной для возвращения на запись в БД backrow:=1; Initial_load.Execute; end; procedure TAdminForm.ImageFileOpenAccept(Sender: TObject); begin if ImageFileOpen.Dialog.FileName<>'' then try point_image.Picture.LoadFromFile(ImageFileOpen.Dialog.FileName); finally point_image_size_znach_label.Caption:=image_size_label+GetFileSize(ImageFileOpen.Dialog.FileName); end else begin //что будет если файл не выбран end; //ImageFileOpen.Dialog.FileName:=''; end; procedure TAdminForm.point_image_label_loadClick(Sender: TObject); begin //картинка по идее нахлодится в корневой директории приложения, поэтому // устанавливаем начальный путь в директории с exe файлом ImageFileOpen.Dialog.InitialDir:=ExtractFilePath(Application.ExeName); ImageFileOpen.Execute; end; procedure TAdminForm.Initial_loadExecute(Sender: TObject); begin if admin_db_cur_table='points' then begin AdminForm.Show_points_table.Execute; end else if admin_db_cur_table='params' then begin AdminForm.Show_params_table.Execute; end; Admin_pp_DBGrid.SetFocus; act:=''; end; procedure TAdminForm.Make_defaultExecute(Sender: TObject); var h: THandle; stream:TMemoryStream; points_Array: array[1..24,1..2] of string; params_Array: array[1..10,1..2] of string; I: Integer; begin if MessageBox(0, PChar(make_defaut_message), PChar(mess_caption), MB_ICONQUESTION or MB_OKCANCEL )=mrOK then begin if AdminForm.admin_db_cur_table='points' then begin //Записываем всю информацию о точках points_Array[1,1]:='PL1_r';points_Array[13,1]:='RP1_r'; points_Array[2,1]:='GL1_r';points_Array[14,1]:='F1_r'; points_Array[3,1]:='MC9_r';points_Array[15,1]:='E45_r'; points_Array[4,1]:='TR1_r';points_Array[16,1]:='VB44_r'; points_Array[5,1]:='C9_r';points_Array[17,1]:='R0_r'; points_Array[6,1]:='IG1_r';points_Array[18,1]:='V67_r'; points_Array[7,1]:='PL1_l';points_Array[19,1]:='RP1_l'; points_Array[8,1]:='GL1_l';points_Array[20,1]:='F1_l'; points_Array[9,1]:='MC9_l';points_Array[21,1]:='E45_l'; points_Array[10,1]:='TR1_l';points_Array[22,1]:='VB44_l'; points_Array[11,1]:='C9_l';points_Array[23,1]:='R0_l'; points_Array[12,1]:='IG1_l';points_Array[24,1]:='V67_l'; points_Array[1,2]:='PL1_r';points_Array[13,2]:='RP1_r'; points_Array[2,2]:='GL1_r';points_Array[14,2]:='F1_r'; points_Array[3,2]:='MC9_r';points_Array[15,2]:='E45_r'; points_Array[4,2]:='TR1_r';points_Array[16,2]:='VB44_r'; points_Array[5,2]:='C9_r';points_Array[17,2]:='R0_r'; points_Array[6,2]:='IG1_r';points_Array[18,2]:='V67_r'; points_Array[7,2]:='PL1_l';points_Array[19,2]:='RP1_l'; points_Array[8,2]:='GL1_l';points_Array[20,2]:='F1_l'; points_Array[9,2]:='MC9_l';points_Array[21,2]:='E45_l'; points_Array[10,2]:='TR1_l';points_Array[22,2]:='VB44_l'; points_Array[11,2]:='C9_l';points_Array[23,2]:='R0_l'; points_Array[12,2]:='IG1_l';points_Array[24,2]:='V67_l'; //загружаем библиотеку h := LoadLibrary('pictures.dll'); //загружаем все в базу if h>0 then begin //удаляем все точки: mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_points_name+';',2); mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_izm_name+';',2); for I := 1 to 24 do 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; GetResourceAsJpeg(points_Array[i,1],h,pict); pict.picture.SaveToStream(stream); (FieldByName('image') as TBlobField).LoadFromStream(Stream); FieldByName('num').AsString:=inttostr(i); FieldByName('opisanie').AsString:=points_Array[i,2]; FieldByName('name').AsString:=points_Array[i,1]; Post; end; stream.Free; finally end; end; end else Showmessage(make_default_dll_error); FreeLibrary(h); Show_points_table.Execute; end; if AdminForm.admin_db_cur_table='params' then begin params_Array[1,1]:=params_default_name1; params_Array[1,2]:=params_default_name_opisnie_1; params_Array[2,1]:=params_default_name2; params_Array[2,2]:=params_default_name_opisnie_2; params_Array[3,1]:=params_default_name3; params_Array[3,2]:=params_default_name_opisnie_3; params_Array[4,1]:=params_default_name4; params_Array[4,2]:=params_default_name_opisnie_4; params_Array[5,1]:=params_default_name5; params_Array[5,2]:=params_default_name_opisnie_5; params_Array[6,1]:=params_default_name6; params_Array[6,2]:=params_default_name_opisnie_6; params_Array[7,1]:=params_default_name7; params_Array[7,2]:=params_default_name_opisnie_7; params_Array[8,1]:=params_default_name8; params_Array[8,2]:=params_default_name_opisnie_8; params_Array[9,1]:=params_default_name9; params_Array[9,2]:=params_default_name_opisnie_9; params_Array[10,1]:=params_default_name10; params_Array[10,2]:=params_default_name_opisnie_10; //удаляем все точки: mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_param_name+';',2); mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_izm_name+';',2); for I := 1 to 10 do 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(i); FieldByName('opisanie').AsString:=params_Array[i,2]; FieldByName('name').AsString:=params_Array[i,1]; Post; end; finally end; end; Show_params_table.Execute; end; end; end; procedure TAdminForm.Admin_show_params_labelClick(Sender: TObject); begin AdminForm.admin_db_cur_table:='params'; Show_params_table.Execute; end; procedure TAdminForm.Admin_show_points_labelClick(Sender: TObject); begin AdminForm.admin_db_cur_table:='points'; Show_points_table.Execute; end; procedure TAdminForm.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 MessageBox(0, PChar(add_point_to_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_points_table.Execute; 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 MessageBox(0, PChar(add_param_to_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_params_table.Execute; end; end else if (admin_db_cur_table='points') and (act='update') then begin backrow:=Point_param_SE.Value; //запихиваем инфу в датасет, и соответственно в базу //запрос на выбор всего что есть 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 MessageBox(0, PChar(red_point_in_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_points_table.Execute; 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 MessageBox(0, PChar(red_param_in_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_params_table.Execute; end; end; end; procedure TAdminForm.point_param_reset_btnClick(Sender: TObject); begin Initial_load.Execute; end; //////////////////////////////// /// ПРОЦЕДУРЫ ТАБЛИЦЫ /// //////////////////////////////// procedure TAdminForm.Admin_pp_DBGridDblClickCell(Sender: TObject; ARow, ACol: Integer); begin //запоминаем текущую строку db_grid_cur_row_num:=Arow; //тоже самое, хз пока почему :) backrow:=ARow; //переходим в режим редактирования if admin_db_cur_table='points' then Red_point.Execute else if admin_db_cur_table='params' then Red_param.Execute; end; procedure TAdminForm.Admin_pp_DBGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var stream:TMemoryStream; begin //если в поле номера есть что-то if Admin_pp_DBGrid.Cells[1,Arow]<>'' then //в зависимости от того активна какая-либо из точек делаем доступными //оперделенными действия begin //записываем текущее значение поля num, по пути проверяем что не //нажат та же строка if db_grid_cur_row_num<>strtoint(Admin_pp_DBGrid.Cells[1,Arow]) then begin db_grid_cur_row_num:=strtoint(Admin_pp_DBGrid.Cells[1,Arow]); //если открыта таблица точек if admin_db_cur_table='points' then begin //показываем текущие данные о точке point_param_num_znach.Caption:=(Admin_pp_DBGrid.Cells[1,Arow]); point_param_name_znach.Caption:=Admin_pp_DBGrid.Cells[2,Arow]; point_param_opis_znach.Caption:=Admin_pp_DBGrid.Cells[3,Arow]; // показываем изображение try //загружаем изображение в отдельный запрос mysql_query(SQL_DM.mysql_query1,'SELECT `image` FROM '+table_points_name+' WHERE `num`='+ Admin_pp_DBGrid.Cells[1,Arow]+';',1); 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 //показываем текущие данные о параметре point_param_num_znach.Caption:=(Admin_pp_DBGrid.Cells[1,Arow]); point_param_name_znach.Caption:=Admin_pp_DBGrid.Cells[2,Arow]; point_param_opis_znach.Caption:=Admin_pp_DBGrid.Cells[3,Arow]; end; end; end; end; procedure TAdminForm.Admin_pp_DBGridKeyPress(Sender: TObject; var Key: Char); begin // см. Процедуру FormKeyPress if key=#27 then begin if act='' then begin AdminForm.CloseModal; AdminForm.Close; end else if admin_db_cur_table='points' then Show_points_table.Execute else if admin_db_cur_table='params' then Show_params_table.Execute; end; //нажатие f5 на таблице - обновление if (GetKeyState(vk_f5) AND 128)=128 then if admin_db_cur_table='points' then Show_points_table.Execute else if admin_db_cur_table='params' then Show_params_table.Execute; end; //////////////////////////////// /// ПРОЦЕДУРЫ ДЛЯ ТОЧЕК /// //////////////////////////////// procedure TAdminForm.Show_points_tableExecute(Sender: TObject); var sel:boolean; begin //ЭЛЕМЕНТЫ ИНТЕРФЕЙСА //Панели Panel2.Hide; Panel1.Show; //Панель с общей информацией point_param_num_znach.Caption:=''; point_param_name_znach.Caption:=''; point_param_opis_znach.Caption:=''; //Панель ввода Point_param_SE.Value:=0; point_param_name_edit.Clear; point_param_ops_edit.Clear; //все что относитмя к картинке 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_label_name; Point_param_label.Caption:=point_label_name; //действия Admin_add_point_param.Action:=AdminForm.Add_point; Admin_red_point_param.Action:=AdminForm.Red_point; Admin_del_point_param.Action:=AdminForm.Del_point; db_grid_cur_row_num:=-1; //загрузка таблицы mysql_query(SQL_DM.mysql_query3, 'SELECT num, name, opisanie FROM '+table_points_name+';', 1); with Admin_pp_DBGrid do begin DataSource:=SQL_DM.mysql_DSQ3; MainForm.Col_resize(Admin_pp_DBGrid, 'num', point_param_num_name, 45); MainForm.Col_resize(Admin_pp_DBGrid, 'name', point_param_name_name, 100); MainForm.Col_resize(Admin_pp_DBGrid, 'opisanie', point_param_opis_name_point, width-ColumnByFieldName['name'].Width- ColumnByFieldName['num'].Width-50-Admin_add_point_param.Width-5); Enabled:=true; end; sel:=true; Admin_pp_DBGridSelectCell(self,1,backrow, sel); act:=''; end; procedure TAdminForm. Add_pointExecute(Sender: TObject); begin // приводим все в исходное состояние Show_points_table.Execute; // таблица недоступна Admin_pp_DBGrid.Enabled:= false; // режим добавления для кнопки сохранения act:='add'; // показываем панель ввода Panel1.Hide; Panel2.Show; 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; point_image.Picture:=nil; end; procedure TAdminForm. Red_pointExecute(Sender: TObject); begin Admin_pp_DBGrid.Enabled := false; act:='update'; Panel1.Hide; Panel2.Show; //копируем текущие значения в поля 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:=image_size_label_name+GetFileSize('tmp'); DeleteFile('tmp'); backrow:=strtoint(point_param_num_znach.Caption); end; procedure TAdminForm. Del_pointExecute(Sender: TObject); begin if MessageBox(0, PChar(del_point_question_mes), PChar(mess_caption), MB_ICONQUESTION or MB_OKCANCEL )=mrOK then try mysql_query(SQL_DM.mysql_query1,'DELETE FROM `'+table_points_name+ '` WHERE `num`='+inttostr(db_grid_cur_row_num)+';',2); finally MessageBox(0, PChar(del_point_from_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_points_table.Execute; end; end; //////////////////////////////// /// ПРОЦЕДУРЫ ДЛЯ ПАРАМЕТРОВ /// //////////////////////////////// procedure TAdminForm.Show_params_tableExecute(Sender: TObject); var sel:boolean; begin //ЭЛЕМЕНТЫ ИНТЕРФЕЙСА //Панели Panel2.Hide; Panel1.Show; //Панель с общей информацией point_param_num_znach.Caption:=''; point_param_name_znach.Caption:=''; point_param_opis_znach.Caption:=''; //Панель ввода Point_param_SE.Value:=0; point_param_name_edit.Clear; point_param_ops_edit.Clear; //все что относитмя к картинке pict .hide; pict.Picture:=nil; 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:=param_label_name; Point_param_label.Caption:=param_label_name; //действия Admin_add_point_param.Action:=AdminForm.Add_param; Admin_red_point_param.Action:=AdminForm.Red_param; Admin_del_point_param.Action:=AdminForm.Del_param; //загрузка таблицы db_grid_cur_row_num:=-1; mysql_query(SQL_DM.mysql_query3, 'SELECT id, name, opisanie From '+table_param_name+';', 1); with Admin_pp_DBGrid do begin DataSource:=SQL_DM.mysql_DSQ3; MainForm.Col_resize(Admin_pp_DBGrid, 'id', point_param_num_name, 45); MainForm.Col_resize(Admin_pp_DBGrid, 'name', point_param_name_name, 100); MainForm.Col_resize(Admin_pp_DBGrid, 'opisanie', point_param_opis_name_param, width-ColumnByFieldName['name'].Width- ColumnByFieldName['id'].Width- 50-Admin_add_point_param.Width-5); Enabled:=true; end; sel:=true; Admin_pp_DBGridSelectCell(self,1,backrow, sel); act:=''; end; procedure TAdminForm. Add_paramExecute(Sender: TObject); begin // см. Процедуру для точек Show_params_table.Execute; Admin_pp_DBGrid.Enabled := false; act:='add'; Panel1.Hide; Panel2.Show; //устанавливаем минимальное значение номера параметра 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 TAdminForm. Red_paramExecute(Sender: TObject); begin Admin_pp_DBGrid.Enabled:= false; act:='update'; Panel1.Hide; Panel2.Show; //копируем текущие значения в поля 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 TAdminForm. Del_paramExecute(Sender: TObject); begin //удаление параметра if MessageBox(0, PChar(del_param_question_mes), PChar(mess_caption), MB_ICONQUESTION or MB_OKCANCEL )=mrOK then try mysql_query(SQL_DM.mysql_query1, 'DELETE FROM `'+table_param_name+ '` WHERE `id`='+inttostr(db_grid_cur_row_num)+';',2); finally MessageBox(0, PChar(del_param_from_database_mes), PChar(mess_caption), MB_ICONINFORMATION or MB_OK ); Show_params_table.Execute; end; end; //вытаскивание картинок из dll procedure TAdminForm.GetResourceAsJpeg(const resname: string; AInstance: Cardinal; aImage: TAdvPicture); var Stream: TResourceStream; begin try Stream := TResourceStream.Create(AInstance, ResName, 'JPEG'); try aImage.Picture := nil; aImage.Picture.LoadFromStream(Stream); aImage.Repaint; finally Stream.Free; end; except on ex: EResNotFound do begin //здесь обработка исключения если ресурс не найден end; end; end; end.