Yo hago esto, pero en el evento OnNewRecord.
Además inicializo lo que sea necesario...
Código Delphi
[-]
procedure TDM.QRevisionesNewRecord(DataSet: TDataSet);
begin
Dataset['idCliente']:=DM.QClientes['idCliente'];
Dataset['Fecha'].AsDateTime:=Now;
end;
El evento BeforePost, lo utilizo para hacer verificaciones y según el caso rellenar cosas que hasta el momento no se podía.
Por ejemplo, si es el número de factura, en este evento y "justo antes de hacer el Post" busco el número que le corresponde y se lo asigno. (Si lo hubiera puesto antes, cabe la posibilidad de que alguien haya hecho una factura mientras estaba rellenando los datos)