Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по РАИС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.36 Mб
Скачать

Создаем форму для справочника «Поставщики»

 Создаем новую форму File->New->Form –Delphi

В инспекторе объектов  устанавливаем следующие свойства для новой формы

Caption -> Поставщики;

FormStyle -> fsMDIChild;

Name -> Form_postav_ik;

 Сохраните модуль с именем postav_ik.

Пропишем Uses general; после раздела implementation в программном модуле unit postav_ik,а в программном модуле unit general главной формы пропишем Uses ed_izmer, product_group, postav_ik;

Размещаем на форме компоненты как показано на рисунке:

Далее все делаем аналогично, как для предыдущего справочника. А я приведу лишь код для обработки событий.

Для кнопки «Новая запись»

procedure TForm_postav_ik.Button1Click(Sender: TObject); begin  //новая запись form_general.table_postav_ik.Append; dbgrid1.SetFocus end;

Для кнопки «Удалить запись» 

 

procedure TForm_postav_ik.Button2Click(Sender: TObject); //удаление записи begin //если записи отсутствуют то выводим сообщение, иначе удаляем запись   if dbgrid1.DataSource.DataSet.RecordCount<>0  then        begin         if (MessageBox(Handle, 'Удаление записей может привести к нарушению работы всей базы данных. Удалить запись?', 'Внимание !!!', MB_YESNO)=  IDYES) then            form_general.table_postav_ik.Delete        end                                                 else ShowMessage('Нет записей для удаления'); end;

Для кнопки «Закрыть»

 

procedure TForm_postav_ik.Button3Click(Sender: TObject); begin //закрытие формы Close; end;

Для события FormActivate формы Form_postav_ik

procedure TForm_postav_ik.FormActivate(Sender: TObject); begin //установка фокуса при активации формы dbgrid1.SetFocus; end;

Для события FormClose формы Form_postav_ik

procedure TForm_postav_ik.FormClose(Sender: TObject; var Action: TCloseAction); begin //процедура закрытия формы   Action:=cafree; end;

Для события FormCloseQuery  формы Form_postav_ik

 

procedure TForm_postav_ik.FormCloseQuery(Sender: TObject;   var CanClose: Boolean); //проверка на наличие пустых записей перед закрытием, если такие записи найдены то отменяем закрытие формы begin  if dbgrid1.DataSource.DataSet.RecordCount<>0  then begin      if not (form_general.table_postav_ik.Locate('postav_ik_name','',[loCaseInsensitive,loPartialKey])) then  begin form_general.table_postav_ik.edit;form_general.table_postav_ik.post; end                                                              else begin ShowMessage('У Вас есть не заполненные записи');CanClose:=false;dbgrid1.SetFocus;end;                                                      end; end;

Внимание для более корректной работы по полю 'postav_ik_name' необходимо добавить проверку на null (т.е. в поле данные не вводились совсем).

Для главной формы Form_general при нажатии на кнопку Категории продуктов выпадающего меню

 

procedure TForm_general.N5Click(Sender: TObject); begin f:=0; //проверяем, активна ли наша форма if ActiveMDIChild.Caption<>'Поставщики' then begin //если нет то ищем ее среди неактивных  и если находим, то показываем ее for i:=0 to form_general.MDIChildCount-1 do if form_general.MDIChildren[i].Caption='Поставщики' then begin MDIChildren[i].Show;f:=1;end; end   else f:=1; //если форма еще не создана, то создаем ее if f<>1 then Tform_postav_ik.Create(Application); end;

Запускаем проект и заполняем справочник данными.