Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/Delphi/D3/SB36OnCalcFields.shtml

Глава 36. TDataSet.OnCalcFields

Событие OnCalcFields

Затрагиваемые объекты TDataSet
Назначение Событие OnCalcFields ссылается на процедуру обработчика событий, в которой можно указать пользовательскую обработку для определения значений любых вычисляемых полей в TDataSet.
Объявление Туре TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;
property OnCalcFields: TDataSetNotifyEvent;
Пример синтаксиса
// Назначить или отменить назначение  обработчика событий OnCalcFields
//в соответствии с флажком

procedure TTDataSetTestForm.OnCalcFieldsCheckBoxClick(Sender:TObject);
begin
   if OnCalcFieldsCheckBox.Checked
      then CustomerTable.OnCalcFields := CustomerTableCalcFields
      else CustomerTable.OnCalcFields := Nil;

end;
 
// Процедура обработчика событий OnCalcFields

procedure TTDataSetTestForm.CustomerTableCalcFields(DataSet: TDataSet);
begin
// Примечание: данная CustomerTableDaysSinceLastlnvoice вычисляется.
// TFloatField добавляется к CustomerTable через Fields Editor,
   if not CustomerTableLastlnvoiceData.isNull then
      CustomerTableDaysSinceLastInvoice.Value := Int(Date — 
                        CustomerTableLastlnvoiceDate.Value);

end;
Описание        Событие OnCalcFields в TDataSet включается всякий раз при считывании запись из базы данных. Событие OnCalcFields включается также и тогда, когда пользователь интерактивно модифицирует невычисляемые поля (когда TDataSet находится в состоянии Edit или Insert) и его свойство AutoCalcFields установлено в True. Обратите внимание, что во время выполнения процедуры обработчика событий OnCalcFields состояние TDataSet устанавливается в CalcFields. В то время, когда TDataSet находится в состоянии CalcFields изменять значения вычисляемых полей не следует. Знайте о том, что если любое невычисляемое поле TDataSet (или даже любое поле связанного TDataSet) модифицируется во время выполнения процедуры обработчика событий OnCalcFields, то скорее всего возникнет бесконечный цикл. Если процедуре обработчика событий OnCalcFields необходимо сослаться на поля из другого TDataSet, самое первое обращение к другому TDataSet (во время создания формы) может функционировать некорректно, если TDataSet, на который ссылаются, еще на создан. Для обеспечения правильного порядка создания TDataSet (тот TDataSet, на который ссылаются, чаще всего должен идти первым), следует использовать команду меню File|Creation Form Designer, с помощью которой можно установить желаемый порядок создания. Естественно, прежде чем ссылаться на вычисляемые поля внутри процедуры обработчика событий OnCalcFields необходимо использовать Fields Editor для их создания.

[Свойство Active] [Метод ActiveBuffer] [Событие AfterCancel] [Событие AfterClose] [Событие AfterDelete] [Событие AfterEdit] [Событие AfterInsert] [Событие AfterOpen] [Событие AfterPost] [Метод Append] [Метод AppendRecord] [Метод ApplyUpdates] [Свойство AutoCalcFields] [Свойство BOF] [Событие BeforeCancel] [Событие BeforeClose] [Событие BeforeDelete] [Событие BeforeEdit] [Событие BeforeInsert] [Событие BeforeOpen] [Событие BeforePost] [Свойство Bookmark] [Свойство CachedUpdates] [Свойство CanModify] [Метод Cancel] [Метод CancelUpdates] [Метод CheckBrowseMode] [Метод ClearFields] [Метод Close] [Метод CommitUpdates] [Метод ControlsDisabled] [Метод CursorPosChanged] [Свойство DataSource] [Свойство DefaultFields] [Метод Delete] [Метод DisableControls] [Метод Edit] [Метод EnableControls] [Свойство EOF] [Свойство ExpIndex] [Метод FetchAll] [Метод FieldByName] [Свойство FieldCount] [Свойство FieldDefs] [Свойство FieldValues] [Свойство Fields] [Свойство Filter] [Свойство FilterOptions] [Свойство Filtered] [Метод FindField] [Методы FindFirst] [Методы FindLast] [Методы FindNext] [Методы FindPrior] [Метод First] [Свойство Found] [Метод FreeBookmark] [Метод GetBookmark] [Метод GetCurrentRecord] [Метод GetFieldList] [Метод GetFieldNames] [Метод GotoBookmark] [Свойство Handle] [Метод Insert] [Метод InsertRecord] [Метод IsLinkedTo] [Свойство KeySize] [Метод Last] [Свойство Locale] [Метод Locate] [Метод Lookup] [Свойство Modified] [Метод MoveBy] [Метод Next] [Событие OnCalcFields] [Событие OnDeleteError] [Событие OnEditError] [Событие OnFilterRecord] [Событие OnNewRecord] [Событие OnPostError] [Событие OnServerYield] [Событие OnUpdateError] [Событие OnUpdateRecord] [Метод Open] [Метод Post] [Метод Prior] [Свойство RecNo] [Свойство RecordCount] [Свойство RecordSize] [Метод Refresh] [Метод Resync] [Метод RevertRecord] [Метод SetDetailFields] [Метод SetFields] [Свойство State] [Метод UpdateCursorPos] [Свойство UpdateObject] [Метод UpdateRecord] [Свойство UpdateRecordTypes] [Метод UpdateStatus] [Свойство UpdatesPending]


<<< Пред. Оглавление
Начало раздела
След. >>>




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/Delphi/D3/SB36OnCalcFields.shtml