Vale, mirando un poco más, el error que se produce es de tipo EDatabaseError
Recordemos que EDBEngineError hereda de EDatabaseError, pero al estar en delphi puesto como Requerido, el error que salta es de tipo
EDatabaseError a secas.
Para que se produzca el EDBEngineError, hay que poner el campo requerido en el Database Desktop, y quitar el requerido en delphi.
Creo que ahora me he explicado mejor. (o eso espero

)
Y.... ahora si sale.
Todo esto se puede comprobar poniendo un BreakPoint en la linea:
Código Delphi
[-]
if (E is EDBEngineError) then
begin
form1.label4.Caption := IntToStr(EDBEngineError(e).Errors[0].Errorcode);
if EDBEngineError(e).Errors[0].ErrorCode = 9732 then
begin
ShowMessage(' Campo Requerido');
Action := daAbort;
end
end
else if (E is EDatabaseError) then
ShowMessage('database error');
Y modificando en Delphi las propiedades Required de ambos campos.
otro saludo de nuevo.