Siguiendo la solución de manelb, he implementado esta versión un poco más simple. En lugar de diferenciar si el campo es TIntegerField o no, podemos hacerlo de la siguiente forma:
Código Delphi
[-]procedure TFIBCustomDataSet.DoFieldValidate(Field:TField;Buffer:Pointer);
begin
if Assigned(Field.OnValidate) then
begin
Include(FRunState,drsInFieldValidate);
try
FValidatingFieldBuffer:=Buffer;
FValidatedField:=Field;
FValidatedRec:= ActiveRecord;
Field.Validate(Buffer);
finally
Exclude(FRunState,drsInFieldValidate);
FValidatingFieldBuffer:=nil;
end;
end;
end;
Llamamos al método Field.Validate para actualizar el estado de la variable FValidating siempre (sea o no un IntegerField) y de paso conservamos las asignaciones que hace el TFIBCustomDataSet.DoFieldValidate.