Estuve revisando el código del Post y, en Delphi 3, primero se ejecuta el método CheckRequiredFields y recién luego OnBeforePost, lo cual no tiene sentido pero, en fin, es así.
La definición del método es la siguiente:
Código Delphi
[-]
procedure TDataSet.Post;
begin
UpdateRecord;
case State of
dsEdit, dsInsert:
begin
DataEvent(deCheckBrowseMode, 0);
CheckRequiredFields;
DoBeforePost;
CheckOperation(InternalPost, FOnPostError);
FreeFieldBuffers;
SetState(dsBrowse);
Resync([]);
DoAfterPost;
end;
end;
end;