我找不到在 Delphi 中使用 TTaskDialog 来显示进度条的示例。就 TTaskDialog 而言,Embarcadero 文档根本没有帮助。
我发现的最好的指南:
http://specials.rejbrand.se/TTaskDialog
不包含任何显示进度条的示例。
我可以在 Delphi 源代码中看到进度条的各种标志,但为了试用它们,我不知道如何以无模式显示任务对话框来试验这些标志。
更新: 我得出的结论是任务对话框不能以使用无模式进度对话框的传统方式使用。这是我通常为长时间运行的操作所做的:
show progress dialog modeless
start a loop to do work
... update progress bar in above dialog (often on a modulo count)
... check for cancel and abort if needed
remove progress dialog
我根据 bummi 的回答对 TTaskDialog 进行的实验显示如下:
- 计时器事件对进度条的更新没有帮助。该事件被触发,但即使使用 updatewindow 调用,计时器事件中进度条的任何更新都不会显示。
- 对话框无法无模式启动,因此即使以某种方式使计时器事件更新进度条,逻辑也必须进行相当大的更改才能继续计时器事件中的工作。
- 可以显示进度条位置的唯一方法是在执行之前设置它。从这个意义上说,它的工作原理与 SilverWarior 的答案中描述的完全一样。它的可能用途似乎是,仅当您需要从用户那里获得下一个按钮响应时,才在具有新进度条位置的循环操作中显示。所以这似乎是正确的答案,但我会等待对此更新的更多回复。
PS我使用Delphi 2007进行这个测试。所以我不知道计时器的进度条更新是否适用于以后的 IDE。但我对此表示怀疑,因为即使是 D2007 代码内部也会发送标准 TaskDialog 消息来更新进度条。