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

Delphi中的SelectDirectory对话框如何动态验证突出显示的文件夹

发布时间:2020-12-15 09:41:21 所属栏目:大数据 来源:网络整理
导读:有没有办法根据验证规则启用/禁用SelectDirectory对话框中的“确定”按钮,例如: 如果突出显示的文件夹名称为“config”,则启用“确定”按钮 如果突出显示的文件夹包含名为“.project”的文件和名为“.settings”的文件夹,则启用“确定”按钮 ? 解决方法 如
有没有办法根据验证规则启用/禁用SelectDirectory对话框中的“确定”按钮,例如:

>如果突出显示的文件夹名称为“config”,则启用“确定”按钮
>如果突出显示的文件夹包含名为“.project”的文件和名为“.settings”的文件夹,则启用“确定”按钮

解决方法

如果使用 ShBrowseForFolder API函数,则可以执行此操作.我认为Delphi附带了一个包装该函数的SelectDirectory版本,尽管包装器可能无法为您需要的内容提供足够的访问权限.您需要在 lpfn参数中包含 callback function以及此签名:

function BrowseCallbackProc(Wnd: HWnd; uMsg: UInt; lParam,lpData: LParam): Integer; stdcall;

当选择更改时,对话框将调用您提供的函数bffm_SelChanged作为uMsg参数.第三个参数是表示当前选择的PIDL,因此您可能需要调用ShGetPathFromIDList来确定字符串名称.您可以通过将消息发送回Wnd参数中对话框的窗口句柄来控制“确定”按钮.例如:

SendMessage(Wnd,bffm_EnableOK,0); // disable the button
SendMessage(Wnd,1); // enable the button

在禁用该选项以进行无效选择后,请不要忘记重新启用该按钮以进行良好选择.

如果有效选择的标准是目录应包含具有特定名称的文件,请确保包含bif_BrowseIncludeFiles标志,以便人们可以看到那些文件.

(编辑:李大同)

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

    推荐文章
      热点阅读