如何在Delphi中中断查找对话框?

时间:2012-01-09 06:04:59

标签: delphi interruption finddialog

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

enter image description here

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

我的问题是用户可能决定取消搜索并决定按取消按钮。然后取消按钮关闭对话框,但搜索在FindDialogFind例程中继续,直到找到或找不到文本。

我在从FindDialog.exe退出时设置了一个断点,但是在FindDialogFind完成之前它没有到达。

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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