Gracias a Ivanzinho he resuelto el problema. El tema estaba en que en el evento afterinsert tenia el siguiente codigo:
Código Delphi
[-]
procedure TDMCpu.IBCpuAfterInsert(DataSet: TDataSet);
begin
IBCpu.Transaction.CommitRetaining;
IBCpu.Refresh;
end;
con lo que la insercion de un registro en blanco quedaba anulada con un CommitRetaining y luego ademas se refrescaba la tabla. Quitando esas dos lineas de codigo problema solucionado.
Muchas gracias a Ivanzinho por la pista.