问题标签 [ttaskdialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3303 浏览

delphi - 如何验证复选框是否在 Delphi TTaskDialog 中被选中?

好的,这应该很容易,但我没有找到解决方案,至少在不太好的文档中没有找到.. 在 aTTaskDialog中,您可以选择添加一个复选框。您可以通过 中的tfVerificationFlagChecked标志来控制其初始状态Flags。但是如何获取对话框后的状态Execute呢?

当然,可以使用该OnVerificationClicked事件并在每次调用时切换一个局部变量,最初等于复选框的初始状态。但人们会期待一种更自然的解决方案。

0 投票
4 回答
13378 浏览

delphi - 如何使用 TTaskDialog?

如何使用TTaskDialog该类(在 Delphi 2009 及更高版本中)?官方文档没有帮助。事实上,您可以通过使用 CodeInsight 或 VCL 源代码检查该类来了解更多信息。那里没有教学解释,但至少也没有错误(嗯,只有几个)。

就在最近,我想知道您如何响应对话框中的超链接点击。实际上,设置tfEnableHyperlinks标志,您可以在对话框的文本部分中包含 HTML 超链接。(好吧,文档对标志说:“如果设置,内容、页脚和扩展文本可以包含超链接。”自然,链接是使用<AHTML 元素实现的,这是“显而易见的”。)我设法弄清楚我自己认为您使用该OnHyperLinkClick事件来响应对超链接的点击。但是这个事件是一个TNotifyEvent,那么你怎么知道点击了哪个链接呢?好吧,文档对此只字未提,所以我不得不猜测。最终我发现URL对话框的公共属性已设置,所以我可以这样做

官方文档说,关于这个属性:

URL 包含任务对话框的 URL。

现在,您必须承认,这是一个很好的解释!但比这更糟糕的是:文档不仅缺乏解释,而且还包含错误。例如

ExpandButtonCaption:此按钮的附加信息。

这不是很准确。什么按钮?如果您显示此特定属性的帮助,它会说

ExpandButtonCaption 包含扩展标题时要显示的附加文本。

也不好。什么字幕?一个适当的解释是

ExpandButtonCaption 是显示在按钮旁边的文本,可让用户展开对话框以显示更多信息。例如,此属性可能是“更多详细信息”。

无论如何,目前,我正在尝试创建一个带有两个命令链接按钮的对话框。我知道操作系统可以显示这些带有标题和更长解释的按钮,但我似乎无法使用TTaskButton. 文档不是很好

但是,与其问如何在 SO 上实现这个特定的东西,我会问另一个问题:

TTaskDialog 类是否有任何(非官方)文档?

0 投票
2 回答
820 浏览

delphi - Delphi TTaskDialog 可以使用 VCLStyles 吗?

Delphi TTaskDialog 可以使用 VCLStyles 吗?

0 投票
2 回答
5553 浏览

delphi - Delphi 使用 TTaskDIalog 进行进度指示的示例

我找不到在 Delphi 中使用 TTaskDialog 来显示进度条的示例。就 TTaskDialog 而言,Embarcadero 文档根本没有帮助。

我发现的最好的指南:

http://specials.rejbrand.se/TTaskDialog

不包含任何显示进度条的示例。

我可以在 Delphi 源代码中看到进度条的各种标志,但为了试用它们,我不知道如何以无模式显示任务对话框来试验这些标志。

更新: 我得出的结论是任务对话框不能以使用无模式进度对话框的传统方式使用。这是我通常为长时间运行的操作所做的:

我根据 bummi 的回答对 TTaskDialog 进行的实验显示如下:

  • 计时器事件对进度条的更新没有帮助。该事件被触发,但即使使用 updatewindow 调用,计时器事件中进度条的任何更新都不会显示。
  • 对话框无法无模式启动,因此即使以某种方式使计时器事件更新进度条,逻辑也必须进行相当大的更改才能继续计时器事件中的工作。
  • 可以显示进度条位置的唯一方法是在执行之前设置它。从这个意义上说,它的工作原理与 SilverWarior 的答案中描述的完全一样。它的可能用途似乎是,仅当您需要从用户那里获得下一个按钮响应时,才在具有新进度条位置的循环操作中显示。所以这似乎是正确的答案,但我会等待对此更新的更多回复。

PS我使用Delphi 2007进行这个测试。所以我不知道计时器的进度条更新是否适用于以后的 IDE。但我对此表示怀疑,因为即使是 D2007 代码内部也会发送标准 TaskDialog 消息来更新进度条。

0 投票
1 回答
252 浏览

delphi - Delphi TTaskDialog 显示/隐藏或启动/停止选框进度条

我有TTaskDialog一个OnButtonClicked事件处理程序,其中执行了一个漫长的过程(几秒钟)。这很好用,但我想向用户表明事情正在发生,而这个漫长的过程正在进行中。我想在最初隐藏的对话框上有一个选框进度条,CommandLink单击它时出现,并在执行冗长的过程时运行 - 我会选择一个可见但在对话框时未启用的进度条是显示并在OnButtonClicked事件中“打开” 。仅包含该tfShowMarqueeProgressBar标志会导致该栏在对话框首次显示时出现并滚动,并且对话框的ProgressBar属性没有EnabledVisible类型属性来控制此行为。

Windows 本身有 TaskDialogs 可以做我想做的事,所以我知道这在理论上是可能的,尽管我意识到围绕本机控件的 VCL 包装器的结构可能会使使用 VCL 对象变得困难或不可能。

TTaskDialog使用VCL 对象可以实现我想要的吗?

0 投票
1 回答
144 浏览

delphi - Delphi TTaskDialog 位置打开

通过 Delphi 10.2.3:TTaskDialog 始终在屏幕中心打开,并且由于它没有 Position 属性,因此似乎没有直接的方法来覆盖该行为。我希望我所有的 TTaskDialogs 都位于 poMainFormCenter。没有为 TTaskDialog 编写替代品,有没有办法强制这种行为?