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;
War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top