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

如何用Vista对话框轻松替换MessageDlg,Delphi 7,delphi,delphi-7,Delphi,Delphi 7,Delphi7无法使用最新版本。我想替换easy way,而不是使用Vista风格的对话框进行form MessageDlg调用,必须在旧操作系统上仍然有效!。我需要这个按钮Yes/No/YesToAll/NotAll。 怎么做 MessageBox不是一种方式:我需要一种形式的所有4个按钮Yes/No/YesToAll/NotAll,或者可能是复选框而不是所有BTN。在Vista上,您使用本机任务对话框TaskDialogIndirect。这具有您需要的所有功能。你需要将标题翻译成帕斯卡,但如

Delphi7无法使用最新版本。我想替换easy way,而不是使用Vista风格的对话框进行form MessageDlg调用,必须在旧操作系统上仍然有效!。我需要这个按钮Yes/No/YesToAll/NotAll。 怎么做


MessageBox不是一种方式:我需要一种形式的所有4个按钮Yes/No/YesToAll/NotAll,或者可能是复选框而不是所有BTN。

在Vista上,您使用本机任务对话框TaskDialogIndirect。这具有您需要的所有功能。你需要将标题翻译成帕斯卡,但如果你自己不想这样做,那么你可以使用绝地标题翻译,例如

在XP和更早版本上,没有任务对话框。没有具有所需功能的本机系统对话框。因此,您需要自己实现该对话框。创建Delphi TForm子代。添加必要的文本、按钮、样式等。使用ShowModal进行显示

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


如果您不想自己构建它,您可以使用提供此类功能的许多现有库中的一个。例如:

您是指任务对话框吗?总之,MessageBox不是比MessageDlg更好吗?MessageBox不是一种方式,没有按钮YesToAll/NotAll,我需要在一个对话框中使用所有4个按钮,也许可以使用带有复选框的对话框而不是所有BTN。Yes task dialogsAny组件存在,它可以调用task dlg api,用4个按钮Yes/no/yestoall/NotAll显示messagebox,或者用复选框代替toall?@r程序可以调用TaskDialogIndirect。这并不难做到。但是它在w2k/xp上不存在,所以你需要一个后备方案。谢谢我认为这个问题不应该是关于特定图书馆的建议,这样的问题是离题的。它应该是关于这个问题的一般方法。你是对的,你给了我一般的建议。还有Synopse,这很好。