2009-07-02 48 views
1

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

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

有没有人有一个关于如何得到我想在Vista下但仍然在XP下工作的建议?我认为Windows 7将有同样的问题。我正在使用D2009。感谢您的任何建议或帮助!

+0

我已经为Embarcadero的Quality Central添加了一个功能请求:http://qc.embarcadero.com/wc/qcmain.aspx?d=83605 – 2010-04-06 06:50:33

回答

3

随着Vista的一个新的方式处理文件对话框已被引入,更多信息谷歌IFileDialog界面或看看this blog post。正如你自己所说,使用OFN_ENABLETEMPLATE标志会导致Vista通用对话框回退到旧样式。

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

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

现在你只需要添加定制到Vista对话框。 The blog post展示了如何通过添加对话框OnExecute处理程序(因为在那个时候,当这个被称为IFileDialog接口已被设置了的话),查询文件对话框的Dialog成员为IFileDialogCustomize接口,并使用要做到这一点,这添加了额外的控件。

+0

谢谢!这正是我所期待的!我已经为该博客添加了一条评论,并提供了一些其他信息以帮助其他人。如果有人需要,也可以链接到msdn文档http://msdn.microsoft.com/en-us/library/bb775912.aspx。 – MarkF 2009-07-03 12:02:23