
- •230103 «Автоматизированные системы обработки информации и управления»
- •Работа с таблицами Создание таблицы в режиме конструктора
- •Практическая часть
- •1. Таблица product_group, которая содержит следующие поля:
- •2. Таблица products, которая содержит следующие поля:
- •3. Таблица prihod, которая содержит следующие поля:
- •4. Таблица ed_izmer, которая содержит следующие поля:
- •5. Таблица postav_ik, которая содержит следующие поля:
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 2
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 5
- •Теоретическая часть
- •Практическая часть
- •Создаем форму для справочника «Поставщики»
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 7
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 8
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 9
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 11
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 12
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 14
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 15
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
Практическая часть
На этом уроке мы создадим форму для справочника «Категории продуктов» и «Поставщики» нашего склада.
Процесс создания данных форм аналогичен созданию формы для справочника «Единицы измерения», смотри предыдущий урок. Поэтому описывать буду достаточно кратко.
Создаем новую форму File->New->Form –Delphi
В инспекторе объектов устанавливаем следующие свойства для новой формы
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; |
Вот и все готово, запускаем проект