在我的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;
問題這個功能,默認情況下,表單反應按下Esc回車鍵mrNoTModalResult
。你可以看到BAAAD是怎麼回事,因爲你的直覺告訴你,Esc-aping模態對話將取消預期的Quit Application過程,但實際上發生的是你發出的不保存任何更改命令和應用程序退出。
我沒有注意到這種行爲,直到我以這種方式失去了一個小時的工作。沒有FormKeyPressed事件處理程序或什麼響應按鍵被放入myModalDialogue代碼。它的工作原理如下:使用showModal
顯示的格式按Esc將返回mrNo
。我如何覆蓋這種默認行爲?
這工作。謝謝! – 2009-04-18 09:55:16