我已经看到了这个问题:Selecting a directory with TOpenDialog
技术上没有回答(OP特别询问TOpenDialog - 而不是TFileOpenDialog),但适用于更高版本的Delphi。
我使用的是Delphi 7,因此TFileOpenDialog不可用。
那么可以使用TOpenDialog来选择文件夹吗?
我了解SelectDirectory并看过其他帖子,我也知道BrowseFolder。
我只对与TOpenDialog有关的答案感兴趣。
我尝试将Filename属性设置为' *。'正如有人在某个地方提出建议,但这并不起作用。
答案 0 :(得分:2)
我已经看到了这个问题:Selecting a directory with TOpenDialog
技术上没有回答
在其中一条评论中也是如此:
" TFileOpenDialog!= TOpenDialog ... TOpenDialog没有这样的选项 "
这就是答案。
我使用的是Delphi 7,因此TFileOpenDialog不可用。
不,不是。但是,它内部使用的基础IFileDialog
和IFileOpenDialog
接口是标准的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
选项。