更改form.showModal的默认模式结果

时间:2009-04-18 09:35:00

标签: delphi event-handling modal-dialog default onkeypress

在我的Delphi应用程序中,我有一个自定义的Yes,No,Cancel对话框,它将从主窗体调用,以确认保存对当前编辑的文件所做的更改。这通常是通过messageDlg()实现的,但我希望这个对话具有自定义的外观,所以我试图通过

来实现这个功能
case myDialogue.showModal of
  mrYes: <<save changes>>;
  mrNo: <<quit application without saving changes>>
  mrCancel: <<set the closeAction to caNone and do nothing>>
end;

问题在于,默认情况下,表单会通过返回 mrNo TModalResult来响应按Esc键。你可以看到BAAAD是怎么回事,因为你的直觉告诉你Esc-aping模态对话将取消预定的退出应用程序进程,但事实上你发出的是不保存任何更改命令和应用程序退出。

直到我以这种方式失去了一个小时的工作,我才注意到这种行为。没有FormKeyPressed事件处理程序或任何响应按键被放入myModalDialogue代码中。只有这样才能按下使用showModal显示的表单中的Esc将返回mrNo。如何覆盖此默认行为?

2 个答案:

答案 0 :(得分:15)

您需要确保“否”按钮的“取消”属性为“假”,并且“取消”按钮的“取消”属性为“真”。

答案 1 :(得分:4)

设置对话框中按钮的“取消”和“默认”属性。

相关问题