Delphi:OnBeforePostイベントでTDataSet.Postをキャンセルする
質問
メインのデータ入力画面では、OnBeforePostイベントにOK /キャンセルダイアログがあります。
- OK コースを受講できます
- キャンセルは現在
Dataset.Cancel;
を実行します
意図したことを実行し、変更をロールバックして、データセットをブラウズモードにします。
これはほとんどのクライアントにとって問題ありませんが、変更できるかどうかを尋ねられました
- キャンセル、投稿を中止し、現在の変更を保持したまま編集モードのままにします。
キャンセルする場合は、キャンセルボタンを使用できます。
procedure TDataSet.Post;のソースを見ると、
この方法でイベントを使用することはできません。
これを行う方法について考えている人はいますか?
フォローアップ:これが私が今それを処理することを選んだ方法です
case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
mrYes: ;
mrNo: Dataset.Cancel;
mrAbort: Abort;
mrNone: Abort;
end;
解決
Abort
メソッドを呼び出すと(ユニット System
から、正しくリコールした場合)、サイレント EAbort
例外が発生し、現在のエラーのみがキャンセルされます操作。動作するはずです。
(ところで、データベース操作をキャンセルするこの方法は、これを達成するための「通常の」方法としてヘルプシステムのどこか深いところで説明されています---それが私が元々このテクニックを得た場所です。)
所属していません StackOverflow