Lo que puedes hacer es lanzar una excepción mostrando un mensaje de error que indique el problema.
Por ponerte un ejemplo sencillo:
Código Delphi
[-]
procedure TDataModule1.ClientDataSet1CodigoValidate(Sender: TField);
begin
if Sender.Value <= 0 then
raise Exception.Create('Error, el valor para el campo ' +
Sender.DisplayName + ' ha de ser mayor que 0');
end;
Al lanzar la excepción el programa se detendrá y el foco quedará en el control actual (que será el del campo).
Saludos!