2

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

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

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

4

1 回答 1

4

Vista 引入了一种处理文件对话框的新方法,有关更多信息,请在谷歌上查看IFileDialog界面或查看此博客文章。正如您自己所说,使用该OFN_ENABLETEMPLATE标志会导致 Vista 通用对话框回退到旧样式。

在 Delphi 2007 和 2009 中,您可以使用Vista Dialogs组件类别中的TFileOpenDialog和。要使您的应用程序与 Vista 之前的 Windows 版本兼容,您应该继续使用那些,并在运行时检查您是否在 Vista 上并且可以使用新对话框:TFileSaveDialogTOpenTextFileDialog

if Win32MajorVersion >= 6 then begin
  // use TFileOpenDialog
  // ...
end else begin
  // use TOpenTextFileDialog
  // ...
end;

现在您只需要将自定义添加到 Vista 对话框中。博客文章显示了如何做到这一点,通过添加OnExecute对话框的处理程序(因为在调用它时IFileDialog已经设置了接口),查询Dialog文件对话框的成员以获取IFileDialogCustomize接口,并使用它来添加其他控件。

于 2009-07-03T07:23:42.957 回答