Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laboratornye_raboty.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

Практическая часть

На этом уроке мы создадим форму для справочника «Категории продуктов» и «Поставщики»  нашего склада.

Процесс создания данных форм аналогичен созданию формы для справочника «Единицы измерения», смотри предыдущий урок. Поэтому описывать буду достаточно кратко.

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

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

Caption -> Категории продуктов;

FormStyle -> fsMDIChild;

Name -> Form_product_group;

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

Пропишем Uses general; после раздела implementation в программном модуле unit product_group как показано на рисунке.

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

Далее размещаем на форме следующие компоненты

Три кнопки TButton из вкладки Standart

В инспекторе объектов для Button1 устанавливаем свойство  Caption  -> Новая запись;

для Button2 устанавливаем  свойство  Caption  -> Удалить запись;

для Button3 устанавливаем  свойство  Caption  -> Закрыть.

 

Из вкладки Data Access помещаем на форму компонент TDataSource.

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

DataSet -> Form_general.table_product_group;

Name -> product_group.

 

А из вкладки Data Controls помещаем на форму компонент TDBGrid.

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

DataSource -> product_group.

Если поля таблицы не отображаются в DBGrid,возможно у вас отключено (False) свойство Active главной форме в инспекторе объектов компонента table_product_group (TADOtable), установите Active -> True.

Сейчас мы переименуем поля нашей таблице. Для этого перейдем на главную форму проекта.

Выберем компонент table_product_group  (ADOTable) и в структуре (Structure) -> product_group -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.

Далее выбираем поле id и в инспекторе объектов устанавливаем у него свойство Visible->False,

затем выбираем поле product_name и в инспекторе объектов устанавливаем у него свойства

DisplayLabel -> Категория продуктов;

DisplayWidth -> 30;  

Теперь пишем обработчики событий для кнопок.

Щелкнем дважды мышкой по кнопке «Новая запись» и пишем следующий код:

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

end;

Щелкнем дважды мышкой по кнопке «Удалить запись» и пишем следующий код:

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

 end;

Щелкнем дважды мышкой по кнопке «Закрыть» и пишем следующий код:

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

В инспекторе объектов для Form_product_group  событие FormActivate пишем:

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

В инспекторе объектов для Form_product_group  событие FormClose пишем:

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

В инспекторе объектов для Form_product_group  событие FormCloseQuery пишем:

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

Сейчас сделаем запуск справочника «Категории продуктов» из главной формы. Для этого выбираем в меню Project -> Options…

Выбираем Forms и перемещаем Form_product_group из Auto-create forms  в Avalable forms.

Переходим на главную форму, щелкаем мышкой по компоненту MainMenu1, а затем по пункту Категории продуктов

  И пишем следующий обработчик события:

procedure TForm_general.N3Click(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_product_group.Create(Application); end;

Вот и все готово, запускаем проект

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]