如何使用Vista对话框Delphi 7轻松替换MessageDlg

时间:2014-08-25 19:45:11

标签: delphi delphi-7

Delphi7(不能使用最新)。我希望用Vista样式对话框替换(简单方法,而不是制作我的表单)MessageDlg调用(必须仍然适用于旧操作系统!)。我需要按钮Yes / No / YesToAll / NoToAll 怎么做?

MessageBox不是一种方式:我需要一个表单中的所有4个按钮是/否/ YesToAll / NoToAll,或者可能是复选框而不是ToAll btns。

1 个答案:

答案 0 :(得分:1)

在Vista上,您使用本机任务对话框TaskDialogIndirect。这具有您需要的所有功能。您需要将标题翻译为Pascal,但如果您不想自己这样做,那么您可以使用JEDI标题翻译。

在XP及更早版本中,没有任务对话框。没有您希望的功能的本机系统对话框。因此,您需要自己实现对话框。创建一个Delphi TForm后代。添加必要的文本,按钮,样式等。使用ShowModal显示。

所有这些问题之一是TaskDialogIndirect必须在运行时与GetProcAddress绑定。实际上,使用GetProcAddress来确定TaskDialogIndirect是否可用,如果没有,则回退到XP代码路径。

如果您不想自己构建,可以使用提供此类功能的众多现有库中的一个。例如:http://blog.synopse.info/post/2011/03/05/Open-Source-SynTaskDialog-unit-for-XP,Vista,Seven