我目前使用TOpenTextFileDialog,因为它有Encodings选项,但在Vista下它使用较旧的打开对话框样式。我想要新的样式打开对话框,但使用编码组合框,我可以填充自定义字符串。基本上我想要记事本在Vista下显示的确切打开对话框。当然我也需要相应的保存对话框。
我做了一些研究,似乎OFN_ENABLETEMPLATE标志导致Vista公共对话框回归旧样式。不幸的是,这也是让TOpenTextFileDialog修改窗口以添加编码组合框的标志(如果我理解正确的话。)
有没有人建议如何在Vista下获得我想要的东西,但仍然可以在XP下运行?我认为Windows 7会有同样的问题。我正在使用D2009。感谢您的任何建议或帮助!
答案 0 :(得分:3)
对于Vista,我们引入了一种处理文件对话框的新方法,有关IFileDialog
界面的更多信息,请查看this blog post。正如您所说,使用OFN_ENABLETEMPLATE
标志会导致Vista常用对话框回归旧样式。
使用Delphi 2007和2009,您可以使用 Vista Dialogs 组件类别中的TFileOpenDialog
和TFileSaveDialog
。为了使您的应用程序与Vista之前的Windows版本兼容,您应该继续使用TOpenTextFileDialog
,并在运行时检查您是否在Vista上并且可以使用新的对话框:
if Win32MajorVersion >= 6 then begin
// use TFileOpenDialog
// ...
end else begin
// use TOpenTextFileDialog
// ...
end;
现在您只需要将自定义添加到Vista对话框中。 The blog post通过为对话框的OnExecute
添加处理程序来显示如何执行此操作(因为在调用此对象时已经设置了IFileDialog
接口),查询{ {1}} Dialog
接口的文件对话框的成员,并使用此成员添加其他控件。