Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП 01. Базы данных. Часть 2 — копия.doc
Скачиваний:
33
Добавлен:
09.12.2018
Размер:
637.44 Кб
Скачать

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.