加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 新的TFileOpenDialog和旧的TOpenDialog有什么区别?

发布时间:2020-12-15 05:23:52 所属栏目:大数据 来源:网络整理
导读:新的TFileOpenDialog和旧的TOpenDialog有什么区别? 在我的电脑(Win 7 / DXE),当我运行的代码,对话框看起来是一样的。 解决方法 TOpenDialog包装了传统的GetOpenFileName。它适用于所有版本的Windows。 TFileOpenDialog包装在Vista中引入的新的基于COM的对
新的TFileOpenDialog和旧的TOpenDialog有什么区别?
在我的电脑(Win 7 / DXE),当我运行的代码,对话框看起来是一样的。

解决方法

> TOpenDialog包装了传统的GetOpenFileName。它适用于所有版本的Windows。
> TFileOpenDialog包装在Vista中引入的新的基于COM的对话框。因此它只适用于Vista或更高版本。它具有比旧对话框更多的功能,最显着的是与搜索的紧密集成。

Vista常用对话框

兼容性常用对话框

GetOpenFileName API在大多数情况下实际上会产生新的对话框,如果调用正确,那么你实际上不能告诉区别。也就是说,历史上,VCL的GetOpenFileName的包装是不精确地实现的,总是导致显示兼容性对话框。

但是,新的COM对话框提供了什么呢?

新对话框提供了一个更容易的定制界面,失去一些通用性。如果您在Vista或更高版本上使用GetOpenFileName的旧对话框模板定制,则对话框会降级为缺少功能的丑陋兼容性版本。

新对话框的另一个大的优点是能够选择无限数量的文件。旧的GetOpenFileName接口在固定大小的缓冲区中返回多选文件名。这可能是一个真正的限制,在我自己的代码,我不得不破解VCL代码,使这个缓冲区更大,当我的应用程序运行在XP上。

如果可能,TOpenDialog会将工作委派给TFileOpenDialog。它使用的测试要求所有以下内容为真:

>在Windows Vista或更高版本上运行。
> Dialogs.UseLatestCommonDialogs全局布尔变量为true(默认为true)。这允许您禁用使用新的COM对话框,如果你选择这样做。
>未指定对话框模板。
> OnIncludeItem,OnClose和OnShow事件都未分配。大概这些不能被TFileOpenDialog触发。

概要

如果您继续使用TOpenDialog,那么您将在多选模式下获得无限数量的文件的好处。但是,如果您想自定义对话框,并拥有新的对话框而不是丑陋的兼容性对话框,那么您需要执行以下操作:

>在XP上使用TOpenDialog和对话框模板方法。>在Vista和以后使用TFileOpenDialog和实现定制与IFileDialogCustomize。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读