在Vista下使用Encodings组合框文件打开对话框

时间:2009-07-02 21:48:39

标签: delphi windows-vista openfiledialog

我目前使用TOpenTextFileDialog,因为它有Encodings选项,但在Vista下它使用较旧的打开对话框样式。我想要新的样式打开对话框,但使用编码组合框,我可以填充自定义字符串。基本上我想要记事本在Vista下显示的确切打开对话框。当然我也需要相应的保存对话框。

我做了一些研究,似乎OFN_ENABLETEMPLATE标志导致Vista公共对话框回归旧样式。不幸的是,这也是让TOpenTextFileDialog修改窗口以添加编码组合框的标志(如果我理解正确的话。)

有没有人建议如何在Vista下获得我想要的东西,但仍然可以在XP下运行?我认为Windows 7会有同样的问题。我正在使用D2009。感谢您的任何建议或帮助!

1 个答案:

答案 0 :(得分:3)

对于Vista,我们引入了一种处理文件对话框的新方法,有关IFileDialog界面的更多信息,请查看this blog post。正如您所说,使用OFN_ENABLETEMPLATE标志会导致Vista常用对话框回归旧样式。

使用Delphi 2007和2009,您可以使用 Vista Dialogs 组件类别中的TFileOpenDialogTFileSaveDialog。为了使您的应用程序与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接口的文件对话框的成员,并使用此成员添加其他控件。