Hola
Yo para lo que tu quieres yo utilizo el evento onsettetx ya que hace la comprobacion justo antes de captar el valor el field
Código Delphi
[-]
procedure TFDades_Assentament.AssentamentDATASetText(Sender: TField;const Text: String);
begin
if trim(text)<>'' then
try
sender.AsDateTime:= strtodate(text);
except
ShowMessage('Formato de Fecha Incorrecta');
end;
end;
Saludos