【发布时间】:2012-06-03 14:40:11
【问题描述】:
基本上,我使用TTimer 事件来关闭所有打开的表单并将用户带回主表单。
我可以遍历Screen.Forms:
for i := 0 to Screen.Formcount - 1 do
Screen.Forms[i].close;
问题是其中一些表单上的 OnCloseQuery 事件 - 它们弹出 MessageDlg 中断此过程:(
【问题讨论】:
-
我试图避免不得不“破解”所有表单的“OnCloseQuery”事件。另外,当 MessageDlg 弹出时,这可以算作“新”表单,之前不在“关闭”循环中,因此必须手动关闭。
-
如果他们因为某种原因中断了进程,那么他们不应该被关闭。如果他们没有理由不关闭,那么他们不应该中断进程(他们不应该设置“CanClose”)。
-
OnCloseQuery 事件经常包含 MessageDlgs 说“您确定要取消此活动吗?”是/否——我什至不想给他们这样的选择——我想在没有 OnCloseQuery 的情况下关闭。
-
所以你问用户是否有理由不关闭。我只是确保有一个视觉指示表明有一个活动,其余的留给用户。但也许这只是我..
-
看来你需要重构你的应用程序。 “关闭处理逻辑”可以委托给一个拥有它需要的所有信息的地方。比全局布尔破解要好得多。