代码之家  ›  专栏  ›  技术社区  ›  MarkF

Vista下的“文件打开”对话框和“编码”组合框

  •  1
  • MarkF  · 技术社区  · 17 年前

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

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

    有没有人对如何在Vista下获得我想要的东西有什么建议,但在XP下仍然可以工作?我认为Windows7也会有同样的问题。我用的是D2009。谢谢你的建议和帮助!

    1 回复  |  直到 17 年前
        1
  •  4
  •   Uli Gerhardt    14 年前

    Vista引入了一种处理文件对话框的新方法,如需有关 IFileDialog 界面或者看看 this blog post . 正如你自己所说,使用 OFN_ENABLETEMPLATE 标志会使“Vista公用”对话框退回到旧样式。

    使用Delphi2007和2009,您可以使用 TFileOpenDialog TFileSaveDialog Vista对话框 组件类别。要使应用程序与Vista之前的Windows版本兼容,应继续使用 TOpenTextFileDialog 对于这些对话框,请在运行时检查您是否在Vista上,是否可以使用新对话框:

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

    The blog post 演示如何通过为添加处理程序来执行此操作 OnExecute 对话框的(因为在调用 IFileDialog 接口已设置),查询 Dialog 的“文件”对话框的成员 IFileDialogCustomize 接口,并使用它添加附加控件。