【问题标题】:File Open Dialog with Encodings combobox under VistaVista下带有编码组合框的文件打开对话框
【发布时间】:2010-11-07 18:57:06
【问题描述】:

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

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

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

【问题讨论】:

标签: delphi windows-vista openfiledialog


【解决方案1】:

Vista 引入了一种处理文件对话框的新方法,有关更多信息,请在谷歌搜索IFileDialog 接口或查看this blog post。正如您自己所说,使用 OFN_ENABLETEMPLATE 标志会导致 Vista 通用对话框回退到旧样式。

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

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

现在您只需将自定义添加到 Vista 对话框。 The blog post 展示了如何做到这一点,通过为对话框的OnExecute 添加一个处理程序(因为在调用它的时候已经设置了IFileDialog 接口),查询文件的Dialog 成员IFileDialogCustomize 界面的对话框,并使用它来添加其他控件。

【讨论】:

  • 谢谢!这正是我一直在寻找的!我已经在该博客中添加了一些附加信息的评论,以防它帮助其他人。如果有人需要,msdn 文档的链接也是msdn.microsoft.com/en-us/library/bb775912.aspx
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多