A tener en cuenta es que si el campo persistente en delphi tiene el valor de Required := True, el error será un EDatabaseError, y no será manejada la excepción por ese bloque.
Quita el Required en delphi para que entre en ese manejador.
Teniendo en cuenta que eso siempre estará en el OnPostError de un TTable, puedes usar esto:
Código Delphi
[-]
DBIERR_KEYVIOL: ShowMessage('clave repetida para tabla...'+
TTable(Dataset).TableName);
Así puedes compartir el mismo evento OnPostError para todas las tablas.
saludos