15

メインのデータ入力画面では、OnBeforePost イベントに OK/Cancel ダイアログがあります。

  • 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;
4

1 に答える 1

23

メソッドを呼び出すとAbort( unit から、System正しく思い出せば) サイレントEAbort例外が発生し、現在の操作だけがキャンセルされます。それはうまくいくはずです。

(ちなみに、データベース操作をキャンセルするこの方法は、これを達成するための「通常の」方法としてヘルプシステムの奥深くに説明されています---私がこのテクニックを最初に得た場所です)。

于 2009-05-08T07:02:36.480 に答える