Шаг 45.
Работа с локальными БД в Delphi.
Работа с полями. Использование объектов класса TField. Вычисляемые поля

    На этом шаге мы рассмотрим создание вычисляемых полей.

    С помощью редактора полей Fields Editor можно создавать так называемые вычисляемые поля. Вычисляемое поле - это поле, значение которого не существует в реальной БД, а вычисляется по значению других полей.

    И вновь обратимся к нашей программе, предназначенной для работы с БД FIRMA. В НД Table2 существуют поля Количество и Цена, поэтому было бы вполне логично, если кроме этих двух полей отображалась бы поле Сумма, которое содержало бы стоимость всего товара.

    Для того чтобы создать это поле, вызовите редактор полей НД Table2 и, щелкнув по редактору правой кнопкой мыши, выберите пункт меню New Field. В диалоговом окне New Field (рисунок 1) нужно выбрать переключатель Calculated, ввести имя создаваемого поля (Summa), выбрать его тип, в данном случае Currency (числа от 5,0·10-324 до 1,7·10308 в денежном формате). Для некоторых полей так же необходимо задавать размер Size (например, для строковых типов). Щелчок по кнопке OK приведет к созданию нового компонента TField.


    Замечание. Не забудьте предварительно закрыть набор данных Table2.


Рис.1. Диалоговое окно New Field

    Чтобы вычислить значение нового поля, необходимо определить обработчик события OnCalcFields для компонента-источника (Table2), к которому оно принадлежит.

    Напишите обработчик события OnCalcFields компонента Table2.

procedure TForm1.Table2CalcFields(DataSet: TDataSet);
begin
   Table2Summa.Value:=Table2Kolvo.Value*Table2Zena.Value;
end;

    Событие OnCalcFields возникает всякий раз, когда курсор (указатель текущей записи) перемещается в НД от записи к записи. Это событие возникает и при инициализации НД (после открытия), а также после фильтрации записей в НД. Кроме того, если свойство AutoCalcFields набора данных содержит True, событие OnCalcFields наступает также при модификации значений невычисляемых полей в режимах dsInsert и dsEdit.

    Присвойте свойству DisplayLabel компонента TField Summa, значение Сумма и запустите программу. Результат работы приложения изображен на рисунке 1.


Рис.2. Результат работы приложения

Созданное приложение можно взять здесь.

    Обработчик события OnCalcFields содержит реализацию алгоритма определения вычисляемого поля или группы полей. Необходимо помнить, что в этом обработчике значение может быть присвоено только вычисляемому полю и никакому другому.

    На следующем шаге мы рассмотрим создание полей выбора данных (Lookup-полей).




Предыдущий шаг Содержание Следующий шаг