
- •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_ed_izmer;
Сохраните модуль с именем ed_izmer.
Пропишем Uses general; после раздела implementation в программном модуле unit ed_izmer как показано на рисунке.
А программном модуле unit general главной формы пропишем Uses ed_izmer;
Это делается для того, чтобы установить связь между формами, иначе нельзя будет обращаться из одной формы к компонентам другой формы.
Далее размещаем на форме следующие компоненты
Три кнопки TButton из вкладки Standart
В инспекторе объектов для Button1 устанавливаем свойство Caption -> Новая запись;
для Button2 устанавливаем свойство Caption -> Удалить запись;
для Button3 устанавливаем свойство Caption -> Закрыть;
Из вкладки Data Access помещаем на форму компонент TDataSource.
В инспекторе объектов для него устанавливаем следующие свойства:
DataSet -> Form_general.table_ed_izmer;
Name -> ed_izmer.
А из вкладки Data Controls помещаем на форму компонент TDBGrid.
В инспекторе объектов для него устанавливаем следующие свойства:
DataSource -> ed_izmer;
Если вы все правильно сделали то должны на форме увидеть следующее:
Если поля таблицы не отображаются в DBGrid,возможно у вас отключено (False) свойство Active главной форме в инспекторе объектов компонента table_ed_izmer (TADOtable), установите Active -> True.
Сейчас мы переименуем поля нашей таблице. Для этого перейдем на главную форму проекта.
Выберем компонент table_ed_izmer (ADOTable) и в структуре (Structure) -> ed_izmer -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.
У вас должно получиться следующее:
Далее выбираем поле id и в инспекторе объектов устанавливаем у него свойство Visible->False,
затем выбираем поле ed_name и в инспекторе объектов устанавливаем у него свойства
DisplayLabel -> Единица измерения;
DisplayWidth -> 30;
После этого видим для формы «Единицы измерения»:
Теперь пишем обработчики событий для кнопок.
Щелкнем дважды мышкой по кнопке «Новая запись» и пишем следующий код:
procedure TForm_ed_izmer.Button1Click(Sender: TObject); begin //новая запись form_general.table_ed_izmer.Append; dbgrid1.SetFocus end; |
Щелкнем дважды мышкой по кнопке «Удалить запись» и пишем следующий код:
procedure TForm_ed_izmer.Button2Click(Sender: TObject); //удаление записи begin //если записи отсутствуют то выводим сообщение, иначе удаляем запись if dbgrid1.DataSource.DataSet.RecordCount<>0 then begin if (MessageBox(Handle, 'Удаление записей может привести к нарушению работы всей базы данных. Удалить запись?', 'Внимание !!!', MB_YESNO)= IDYES) then form_general.table_ed_izmer.Delete end else ShowMessage('Нет записей для удаления'); end; |
Щелкнем дважды мышкой по кнопке «Закрыть» и пишем следующий код:
procedure TForm_ed_izmer.Button3Click(Sender: TObject); begin //закрытие формы Close; end; |
В инспекторе объектов для Form_ed_izmer событие FormActivate пишем:
procedure TForm_ed_izmer.FormActivate(Sender: TObject); begin //установка фокуса при активации формы dbgrid1.SetFocus; end; |
В инспекторе объектов для Form_ed_izmer событие FormClose пишем:
procedure TForm_ed_izmer.FormClose(Sender: TObject; var Action: TCloseAction); begin //процедура закрытия формы Action:=cafree; end; |
В инспекторе объектов для Form_ed_izmer событие FormCloseQuery пишем:
procedure TForm_ed_izmer.FormCloseQuery(Sender: TObject; var CanClose: Boolean); //проверка на наличие пустых записей перед закрытием, если такие записи найдены то отменяем //закрытие формы begin if dbgrid1.DataSource.DataSet.RecordCount<>0 then begin if not (form_general.table_ed_izmer.Locate('ed_name', '', [loCaseInsensitive,loPartialKey])) then begin form_general.table_ed_izmer.edit; form_general.table_ed_izmer.post; end else begin ShowMessage('У Вас есть не заполненные записи');CanClose:=false;dbgrid1.SetFocus;end; end; end; |
Сейчас сделаем запуск справочника «Единиц измерения» из главной формы. Для этого выбираем в меню Project -> Options…
и видим следующее окно:
Выбираем Forms и перемещаем Form_ed_izmer из Auto-create forms в Avalable forms.
Переходим на главную форму, щелкаем мышкой по компоненту MainMenu1, а затем по пункту Единицы измерения
И пишем следующий обработчик события:
procedure TForm_general.N2Click(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_ed_izmer.Create(Application); end; |
Переменные f и I описываем в разделе var
var Form_general: TForm_general; f,i:integer; //f:=1 если подчиненная форма уже запущена и f:=0 если нет |
Вот и все готово, запускаем проект