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

Глава 36. TDataSet.BeforePost

Событие BeforePost

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

procedure  TTDataSetTestForm.BeforePostCheckBoxClick(Sender: TObject);
begin
   if BeforePostCheckBox.Checked
      then CustomerTable.BeforePost := CustomerTableBeforePost
      else CustomerTable.BeforePost := Nil;

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

procedure TTDataSetTestForm.CustomerTableBeforePost(DataSet: TDataSet);
begin
   MessageBeep(MB_ICONQUESTION);
   if MessageDlg('Does the current record pass all validation criteria?',
                  mtConfirmation,[mbYes,mbNo],0)<>mrYes then begin
// Возбудить  "молчаливое"  исключение для предотвращения закрытия
      Abort;
   end;

end;
Описание        Событие BeforePost в TDataSet включается как раз перед пересылкой любых изменений, выполненных в текущей записи либо из-за вмешательства пользователя, либо за счет вызова в коде метода Post TDataSet. Post можно сгенерировать неявно, переместившись с текущей записи. Если в процедуре обработчика события BeforePost возбудить исключение, можно предотвратить пересылку. Типичным применением процедуры обработчика событий BeforePost является реализация правил проверки для всей записи. Если запись не удовлетворяет проверке, возбуждается исключение и неправильная запись не принимается. Еше одним типичным применением обработчика событий BeforePost является копирование результатов вычисляемых полей в теневые результирующие поля в том же (или другом) наборе данных. Данное применение исходит из того факта, что во время повторного вычисления (например, когда состояние TDataSet установлено в dsCalcFields) нельзя присвоить значения полей без рекурсивного (бесконечного) обращения к обработчику событий OnCalcFields.

[Свойство 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/SB36BeforePost.shtml