2

我有一个标准的查找对话框:

在此处输入图像描述

我的程序可以处理一些非常大的文件,在这些文件中查找文本可能需要 10 或 20 秒或更长时间。因此,在按下“查找下一个”按钮后,我将光标更改为沙漏。在找到或未找到文本后,我将其更改回标准指针。

我的问题是用户可能决定取消搜索并决定通过按下取消按钮来执行此操作。然后取消按钮关闭对话框,但在我的 FindDialogFind 例程中继续搜索,直到找到或未找到文本。

我在 FindDialog.exe 退出时设置了一个断点,但直到 FindDialogFind 完成后才到达断点。

有什么方法可以捕获已按下取消按钮的事实,这将允许我打破 FindDialogFind 循环,或者在按下取消按钮时是否有更好的方法来停止搜索?

4

2 回答 2

4

在组件的OnClose情况下TFindDialog,设置一个布尔变量,FAbortSearch。在您的搜索例程中经常检查此 var,如果设置则中止。

于 2012-01-09T07:04:15.067 回答
1

将搜索逻辑移动到您在Next按下按钮时启动的工作线程中。当对话框关闭时,如果线程仍在运行,您可以终止它。

于 2012-01-09T22:11:26.543 回答