是否可以使用TOpenDialog选择文件夹/目录?

时间:2017-03-23 19:28:26

标签: delphi-7

我已经看到了这个问题:Selecting a directory with TOpenDialog

技术上没有回答(OP特别询问TOpenDialog - 而不是TFileOpenDialog),但适用于更高版本的Delphi。

我使用的是Delphi 7,因此TFileOpenDialog不可用。

那么可以使用TOpenDialog来选择文件夹吗?

我了解SelectDirectory并看过其他帖子,我也知道BrowseFolder。

我只对与TOpenDialog有关的答案感兴趣。

我尝试将Filename属性设置为' *。'正如有人在某个地方提出建议,但这并不起作用。

1 个答案:

答案 0 :(得分:2)

  

我已经看到了这个问题:Selecting a directory with TOpenDialog

     

技术上没有回答

在其中一条评论中也是如此:

" TFileOpenDialog!= TOpenDialog ... TOpenDialog没有这样的选项 "

这就是答案。

  

我使用的是Delphi 7,因此TFileOpenDialog不可用。

不,不是。但是,它内部使用的基础IFileDialogIFileOpenDialog接口是标准的Win32 COM接口(仅限Vista +),因此它们可以在Delphi 7中使用就好了,只要你有它们的代码中的声明。

  

那么可以使用TOpenDialog来选择文件夹吗?

简短的回答是

在Delphi 7中,TOpenDialog只是Win32 API GetOpenFileName()函数的包装器,它只能选择和返回文件,而不是文件夹。您必须使用SelectDirectory()(如果您使用较新的重载,它只是Win32 API SHBrowseForFolder()函数的包装),或IFileDialog / IFileOpenDialog FOS_PICKFOLDERS }选项已启用。

在Delphi的现代版本中,TOpenDialog尽可能在Vista +上委托IFileDialog / IFileOpenDialog(启用主题,不使用新对话框未公开的旧VCL功能等) ),但它不启用FOS_PICKFOLDERS选项。