- •Содержание
- •Введение
- •Создание приложений с использованием технологии bde
- •1.1. Практическая работа № 1: создание базы данных
- •1.1.1. Создание таблиц dBase IV
- •1.1.2. Создание индексов
- •1.1.3. Создание таблиц Paradox 7
- •1.1.4. Задание свойств таблицы Paradox 7
- •Задание на практическую работу № 1
- •1.2. Практическая работа № 2: установление связей между таблицами в многотабличной базе данных
- •1.2.1. Создание алиаса
- •1.2.2. Связывание таблиц
- •Задание на практическую работу № 2
- •1.3. Практическая работа № 3: работа с полями и компонентом dbGrid
- •1.3.1. Использование объектов-полей
- •1.3.2. Обращение к значению поля
- •1.3.3. События объекта-поля
- •1 Рис. 10. Пример использования события OnCellClick .3.4. События сетки dbGrid
- •1.3.5. Создание объектов-столбцов в dbGrid
- •1.3.6. Формирование списка возможных значений столбца
- •Задание на практическую работу № 3:
- •1.4. Практическая работа № 4: работа с наборами данных (компонент Table)
- •1.4.1. Открытие и закрытие набора данных
- •1.4.2. Доступ к записям
- •1.4.3. Навигация по набору данных
- •1.4.4. Поиск записей в наборах данных
- •1.4.5. Реализация каскадных изменений
- •1.4.6. Пример выполнения лабораторной работы
- •Задание на практическую работу № 4
- •1.5. Практическая работа № 5: работа с отчетами
- •1.5.1. Создание простейшего отчета
- •1.5.2. Создание отчета для связанных наборов данных
- •1.5.3. Использование выражений (компонент qrExpr)
- •1.5.4. Группирование данных в отчете
- •Задание на практическую работу № 5:
- •1.6. Практическая работа № 6: sql-запросы (компонент Query)
- •Вариант 2. Поставки товаров
- •Вариант 3. Исполнители
- •Вариант 4. Картинная галерея
- •Вариант 5. Порт
- •Вариант 6. Студенты
- •Вариант 7. Строительная компания
- •Вариант 8. Автосалон
- •Вариант 9. Аэропорт
- •Вариант 10. Диагностический центр
- •Вариант 11. Реклама
- •Вариант 12. Быстрая пицца
- •Вариант 13. Клуб собаководов
- •Вариант 14. Грузоперевозки
- •Вариант 15. Аптека
- •Вариант 16. Автовокзал
- •Вариант 17. Общественная организация
- •Вариант 18. Учет потребления газа
1.3.3. События объекта-поля
В качестве примера возьмем проверку правильности введенного в поле значения.
Для контроля за правильностью вводимых в поле значений можно использовать события OnValidate или OnSetText объекта-поля (рис. 9). Оба события наступают после изменения значения поля, но до его запоминания в таблице.
Рис. 9. События объекта-поля
В обработчике OnValidate в случае обнаружения неверного значения программа должна предотвратить его запоминание, создав исключительную ситуацию или обратившись к глобальной процедуре Abort. Например, поле AL_RECORDS (число записей в альбоме, таблица B) должно быть положительным. Для контроля за этим можно написать такой обработчик:
procedure TForm1.Table2AL_RECORDSValidate(Sender: TField);
begin
if Table2AL_RECORDS.Value<=0 then
begin
ShowMessage(‘В альбоме должна быть хотя бы одна запись!');
Abort;
end;
end;
Однако следует учесть, что, отказавшись от запоминания неверного значения в таблице, программа, тем не менее, оставила НД в состоянии редактирования. Это означает, что пользователь не может покинуть поле до тех пор, пока не введет в него правильное значение.
В этом случае использовать событие OnSetText значительно разумнее, т.к. в нем можно просто игнорировать неверные значения и не создавать исключительную ситуацию. В обработчике этого события программа должна присвоить полю новое значение, и если она этого не сделает, то поле останется без изменений:
procedure TForm1.Table2AL_RECORDSSetText(Sender: TField;
const Text: String);
begin
if StrToInt(Text)<=0 then
ShowMessage('В альбоме должна быть хотя бы одна запись!')
else
Table2AL_RECORDS.Value:=StrToInt(Text);
end;
Итак, у вас есть простейшая БД. Компонент DBGrid отображает содержимое НД (набора данных) в виде таблицы, в которой столбцы соответствуют полям НД, а строки — записям.
1 Рис. 10. Пример использования события OnCellClick .3.4. События сетки dbGrid
В качестве примера рассмотрим событие OnCellClick. Это событие возникает, когда происходит щелчок мыши по сетке.
Допустим, нам надо, чтобы при выборе записи в таблице B (альбомы) значения ее полей отображались на экране, например, в компоненте Label (рис. 10). Этот компонент находится на вкладке Standard и представляет собой обычный текст, отображаемый на форме.
Выделите сетку DBGrid, затем в Object Inspector выберите вкладку Events (события) и два раза щелкните в поле события OnCellClick. Затем введите в процедуре следующий код:
Label1.Caption:=Table2AL_NAME.AsString;
1.3.5. Создание объектов-столбцов в dbGrid
О
Рис. 11.
Редактор столбцов DBGrid
Обычно объекты-столбцы создаются на этапе конструирования программы с помощью редактора столбцов (рис. 11). Для его вызова нужно выбрать опцию Columns Editor в локальном меню компонента DBGrid (нажмите правой кнопкой мыши на нем).
Кнопки, расположенные в верхней части окна редактора столбцов, выполняют следующие действия (слева направо):
-
Add new — создание нового объекта-столбца;
-
Delete — удаление выбранного объекта;
-
Add All Fields — создание объектов-столбцов для всех доступных полей НД;
-
Restore Defaults — возврат к исходным свойствам выделенного объекта-столбца.
Эти команды доступны также во всплывающем меню, которое можно вызвать, нажав правую кнопку мыши в свободном поле окна редактора.
Нажмите на кнопку Add All Fields, чтобы создать столбцы для всех полей НД. «Схватив» столбец мышью, вы можете менять его место среди других столбцов. Для изменения заголовка столбца раскройте сложное свойство Title в окне Object Inspector и измените подсвойство Caption (рис. 12):
Рис. 12. Изменение заголовка столбца DBGrid
C помощью других подсвойств можно изменять выравнивание текста заголовка относительно границ столбца (Alignment), фоновый цвет заголовка (Color), цвет и шрифт текста (Font). Защитить отображаемые в столбце данные можно, изменяя его свойство ReadOnly, а временно удалить его из сетки — с помощью свойства Visible.