In realtà hai ragione....Al dataset è associato un eveto AfterPost (ed anche un AfterInsert), ma non mi sembra che ci siano 'Abort' (espliciti intendo)
Cmq ti volevo dire un'altra cosa: nella form in cui effettuo il post che non funziona è definito l'evento FormCloseQuery

codice:
void __fastcall TDDT::FormCloseQuery(TObject *Sender,
      bool &CanClose)
{
  CanClose=true;
  if (modbrw->ImageIndex==37)
    return;
  //esce dall'editing
  TWinControl *LastCtrl;
  LastCtrl = ActiveControl;
  DefocusControl(ActiveControl,false);
  if (DMDDT->tDDT->Modified)
  {
    String Msg= "Salvare le modifiche effettuate";
    int Conferma=MessageDlg(Msg,
                            mtConfirmation,
                            TMsgDlgButtons() << mbYes << mbNo << mbCancel,
                            0);
    switch (Conferma)
    {
      case mrYes :
        DMDDT->tDDT->Post();
        break;
      case mrCancel :
        LastCtrl->SetFocus();
        CanClose=false;
        break;
    default :
      if(New)
        DMDDT->tDDT->Delete();
      else
        DMDDT->tDDT->Cancel();
    }
  }
  else
    if(New)
      DMDDT->tDDT->Delete();
}
Questo è il codice che gestisce la form quando la chiudo senza aver salvato...
Come puoi vedere, nel caso in cui confermo con YES effettuo lo stesso POST del caso precedente. In questo caso funziona!!!!
Come mai?