- •230103 «Автоматизированные системы обработки информации и управления»
- •Работа с таблицами Создание таблицы в режиме конструктора
- •Практическая часть
- •1. Таблица product_group, которая содержит следующие поля:
- •2. Таблица products, которая содержит следующие поля:
- •3. Таблица prihod, которая содержит следующие поля:
- •4. Таблица ed_izmer, которая содержит следующие поля:
- •5. Таблица postav_ik, которая содержит следующие поля:
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 2
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 5
- •Теоретическая часть
- •Практическая часть
- •Создаем форму для справочника «Поставщики»
- •Вопросы для контроля
- •Литература
Создаем форму для справочника «Поставщики»
Создаем новую форму 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; |
Запускаем проект и заполняем справочник данными.
