Установка связей между компонентами и БД. Создание меню

Теперь разместив на форме диалога компонент Menu с палитры компонентов Стандарт, сформируем простое меню, задавая названия пунктов меню свойству Items. Для Поиск – подменю: SQL и фильтрация, для Сортировкапо фамилии, по наименованию дисциплин и пункт Выход. Обратите внимание на порядок задания имен, в свойстве Name каждого пункта будет отображен этот номер.

Модуль пункта меню Выход будет самым информативным: Close();

Предыдущие приложения (л/р№1, 2) разрабатывались для ведения данных одной таблицы. Здесь же, одна из связанных таблиц является головной (master, таблица stud), а другая вспомогательной, детализирующей (detail, таблица ozen).

Итак, разместив в окне 2 комплекта Table, DataSource и средства отображения данных DBGrid, зададим их цепочку связи, которую можно представить схемой (рис.6). Связь с БД устанавливается в итоге значением true свойства Active.

Для связи в форме этих таблиц, временно разорвем связь, указав для вспомогательной таблицы ozen значение false для свойства Active.

Рис. 5 Форма диалога приложения БД

 
 


Рис. 6 Схема взаимодействия компонентов Delphi с БД.

Далее в свойстве MasterSource компонента Table, настроенного на вспомогательную таблицу, установите имя головной таблицы. После этого щелкните на свойстве MasterFields. Откроется окно редактора связей полей (Field Link Designer). Индексировать таблицу надо так, чтобы индекс включал ключевое поле связи Zach. После этого можете восстанавливать связь с БД (Active=true) и запустить приложение.

Теперь немного об удобстве вода данных в форму. Для полей просмотра в DBGrid можно в свойстве Columns задать значение свойства ButtonStyle поля равным cbsAuto и тогда при редактировании данных автоматически будет появляться выпадающий список, из которого пользователь может выбирать соответствующее значение (например, для поля group).

На форму можно добавить кнопки Добавить, Удалить, Сохранить, Отменить с соответствующими обработчиками событий:

Table1.Append; \\ метод, добавляющий новую запись в БД

Table1.DeleteRecords(arCurrent); \\ удаление записи, на которой стоит курсор текущей записи

Table1.Post; \\ сохранение изменений в БД

Table1.Cancel; \\отмена действий пользователя

Для корректного удаления записи, можно предварительно уточнить требование у пользователя:

If (Application.MessageDlg (

“Действительно хотите удалить запись?”,

“Подтвердите удаление записи”,

MB_YESNO + MB_ICONQUESTION) = IDYES) then

Table1.Delete;

который после положительного ответа на вопрос программы удаляет текущую запись.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: