在我的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