私のDelphiアプリケーションでは、編集中のファイルに加えられた変更を保存するためにメインフォームから呼び出されるカスタムのYes、No、Cancelダイアログがあります。これは通常messageDlg()によって達成されるであろうが、私はルックスをカスタマイズしたのが、この対話を望んでいたので、デフォルトでは、フォームがエスケープキーを押しに反応する、ということです私はform.showModalのデフォルトのモーダル結果を変更する
case myDialogue.showModal of
mrYes: <<save changes>>;
mrNo: <<quit application without saving changes>>
mrCancel: <<set the closeAction to caNone and do nothing>>
end;
問題によってこの機能を実現しようとしていますキーを返すことによってmrNoTModalResult
。そしてあなたはBAAADがどのようになっているかを知ることができます。モーダルダイアログをエスケープすると、意図したアプリケーション終了プロセスがキャンセルされますが、実際には何が起こるのでしょうか?変更を保存しないコマンドとアプリケーションを終了します。 。
私はこのような方法で1時間の仕事を失うまで、この動作に気付きませんでした。 FormKeyPressedイベントハンドラまたは何もキープレスに応答するは、myModalDialogueコードに入れられませんでした。 showModal
を使って表示されたフォームでEscを押すと、mrNo
が返されます。このデフォルト動作をどのように上書きできますか?
これは機能しました。ありがとう!正しい答えは –