Aquí os pongo mas detallado el proceso de borrado de un registro, usado en una de mis aplicaciones
Código Delphi
[-]procedure TFCLIENTES.SbBorrarClick(Sender: TObject);
begin PGc.ActivePage:=DATOS;
if (MessageBox(0, '¿Esta seguro de eliminar el registro actual?', 'Eliminar Registro', MB_ICONSTOP or MB_YESNO or MB_DEFBUTTON2) = ID_No) then abort
else begin
VarsCod:=DBEdit1.Field.Value;
Case Application.MessageBox(pchar('El Registro ha sido eliminado, desea seguir adelante o recuperar lo?' +#13#10
+#13#10
+#13#10+'Si elige [ SI ] se borrara permanente, así como los datos derivados'
+#13#10+'Si elige [ NO ] se recupera el registro borrado'), pchar('Registro Eliminado'), 4+48+256) of
6:begin try
ActIbdataset(DM.IBDirecciones,'DELETE FROM DIRECCIONES WHERE (DIRECCIONES.MODULO = '+QuotedStr('CLIENTES')+') AND (DIRECCIONES.CODIGO = '+QuotedStr(VarsCod)+')');
ActIbdataset(DM.IBDirecciones,'SELECT * FROM DIRECCIONES');
DSPrincipal.DataSet.Delete;
IBT.CommitRetaining;
except
Case Application.MessageBox( pchar( 'Se ha producido un error y no se ha podido borrar todos los datos'
+#13#10
+#13#10+'Que desea hacer?'
+#13#10
+#13#10+'ACEPTAR y eliminar de manera permanente los datos si borrados'
+#13#10+'CANCELAR y no borrar nada'), pchar('Se ha producido un error'), 1+48+256) of
1:IBT.CommitRetaining; 2:IBT.RollbackRetaining; end;
end;
end;
7:begin IBT.RollbackRetaining; end;
end;
end;
end;