【发布时间】:2012-01-09 06:04:59
【问题描述】:
我有一个标准的查找对话框:
我的程序可以处理一些非常大的文件,在这些文件中查找文本可能需要 10 或 20 秒或更长时间。因此,按下“查找下一个”按钮后,我将光标更改为沙漏。在找到或未找到文本后,我将其改回标准指针。
我的问题是用户可能决定取消搜索并通过按下取消按钮来决定这样做。然后取消按钮关闭对话框,但在我的 FindDialogFind 例程中继续搜索,直到找到或未找到文本。
我在 FindDialog.exe 退出时设置了一个断点,但直到 FindDialogFind 完成后才到达。
有什么方法可以捕获已按下取消按钮的事实,这将允许我打破 FindDialogFind 循环,或者是否有更好的方法可以在按下取消按钮时停止搜索?
【问题讨论】:
-
在
FindDialog的OnClose事件中,设置一个布尔变量FStopSearch。在您的搜索例程中经常检查此 var,如果设置则中止搜索。 -
@LURD - 这正是我想做的。如何为 Windows 公共对话框设置 OnClose 事件处理程序?它不是德尔福形式。你为什么不把这个作为答案而不是评论给我呢?
-
哎呀。放置的 FindDialog 确实具有三个事件。 FindDialogClose 应该可以正常工作。谢谢。我们都有那些没有任何记录的日子。对不起。
-
好的,我做了一个回答,并添加了关于 TFindDialog 组件的评论。
标签: delphi interruption finddialog