【问题标题】:In Delphi how does the OnIncludeItem event work on TOpenDialog?在 Delphi 中,OnIncludeItem 事件如何在 TOpenDialog 上工作?
【发布时间】:2012-07-02 03:48:14
【问题描述】:

我一直在玩 Delphi XE2 中的 TOpenDialog,但无法弄清楚如何使 OnIncludeItem 事件起作用。我希望能够根据文件名(或文件大小等)显示文件。有人成功使用过这个活动吗?

【问题讨论】:

    标签: delphi


    【解决方案1】:

    TOpenDialogWindows Common Dialog 组件的封装。 OnIncludeItem 事件是对CDN_INCLUDEITEM 通知机制的封装。 The documentation for this notification 解释说设置了 SFGAO_FILESYSTEMSFGAO_FILESYSANCESTOR 标志的项目总是包含在内,无论您从 CDN_INCLUDEITEM 通知消息返回什么(或事件,在 Delphi 中)。

    此外,the documentation for these SFGAO attributes 进一步向我建议 CDN_INCLUDEITEM 机制从未打算用于过滤文件系统项目,而是用于排除 部分的内容文件系统。

    another answer to a slightly different question 确认了这一点。

    【讨论】:

    • 在 OnIncludeItem 事件中设置 Include := False(或 true)似乎没有任何作用 - 所以我认为你是对的,因为它不能用于过滤文件。
    • 我希望在 Vista 上这个事件甚至不会触发,因为 TOpenDialog 是在新的公共项目对话框而不是旧的公共文件对话框之上实现的。
    • 事实上,至少对于我的简单测试来说,似乎发生的事情是 OnIncludeItem 永远不会触发,并且您会得到旧的遗留对话框。世界上最糟糕的!
    • @David.. 这是其中一个组件,我认为它试图为某种东西提供一个统一的编程接口有点太难了,因为它的“不便”的各种伪装拥有 TCommonItemOpenDialog 与 TOpenDialog 是值得的。试图弄清楚这个组件在可以应用的各种设置下的行为(有意或无意)是不眠之夜的秘诀!
    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2010-11-05
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多