Delphi: Abbrechen eines TDataSet.Post in einem OnBeforePost Ereignis
Frage
Auf dem Haupt-Dateneingabebildschirm, haben wir eine OK / Abbrechen-Dialog im OnBeforePost Ereignisse.
- OK lässt den Dingen ihren Lauf
- Abbrechen jetzt tut ein
Dataset.Cancel;
Was tut, was es soll rollen alle Änderungen zurück und stellt die Datenmenge in der Browse-Modus.
Das ist gut für die meisten der Kunden, aber wir haben gefragt, ob sie geändert werden kann
- Abbrechen , die Post abbrechen und im Bearbeitungsmodus bleibt mit den aktuellen Änderungen beibehalten.
Wenn sie abbrechen möchten, können sie die Löschtaste verwenden.
Mit Blick auf der Quelle für procedure TDataSet.Post;
ist es nicht möglich, sieht die Veranstaltung auf diese Weise zu verwenden.
Dose jemand irgendwelche Gedanken über eine Art und Weise dies geschehen könnte?
Follow-up: Das ist, wie ich gewählt haben, es jetzt zu behandeln
case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
mrYes: ;
mrNo: Dataset.Cancel;
mrAbort: Abort;
mrNone: Abort;
end;
Lösung
Der Aufruf der Methode Abort
(von der Einheit System
, wenn ich mich richtig erinnere) wirft eine stille EAbort
Ausnahme, die nur den aktuellen Vorgang abbricht. Das sollte funktionieren.
. (BTW: diese Methode einen DatabaseT Betrieb Cancelling ist auch irgendwo tief im Hilfesystem als ‚normale‘ Art und Weise beschrieben, um dies zu erreichen --- das ist, wo ich diese Technik von ursprünglich bekam)