Delphi7(不能使用最新)。我希望用Vista样式对话框替换(简单方法,而不是制作我的表单)MessageDlg
调用(必须仍然适用于旧操作系统!)。我需要按钮Yes / No / YesToAll / NoToAll
怎么做?
MessageBox
不是一种方式:我需要一个表单中的所有4个按钮是/否/ YesToAll / NoToAll,或者可能是复选框而不是ToAll btns。
答案 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