函数原型:extern DELPHI_PACKAGE bool __fastcall SelectDirectory(System::UnicodeString &Directory, TSelectDirOpts Options, int HelpCtx)/
第一个参数:System::UnicodeString &Directory,打开对话框时选择的目录;
第二个参数: TSelectDirOpts Options,是一个集,参数有:<< sdAllowCreate(允许创建) << sdPerformCreate(执行创建) << sdPrompt(提示);
sdAllowCreate 对话框中有一个Edit 组件,用户可以输入新的目录名。但是如果要新建该目录,程序员必须根据获取的文件自己编写代码新建目录。 sdPerformCreate 对话框中有一个Edit 组件,用户可以输入一个不存在的目录名,对话框将选中该目录并创建该目录。 sdPrompt 对话框中有一个Edit 组件,如果用户输入的目录名不存在,则显示一个信息对话框提示是否创建新目录。如果同时选中的是sdAllowCreate 设置,则程序员必须根据获取的文件自己编写代码新建目录。
第三个参数:int HelpCtx,是一个帮助ID,可以直接写0;
#include <Vcl.FileCtrl.hpp> //首先在文件头中包含头文件
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//方式一
String Dir = "C:\\Program Files\\CodeGear";
if (SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt,0))
this->Edit1->Text = Dir;
}
原型:extern DELPHI_PACKAGE bool __fastcall SelectDirectory(const System::UnicodeString StartDirectory, /* out */ System::TArray__1<System::UnicodeString> &Directories, TSelectDirFileDlgOpts Options = TSelectDirFileDlgOpts() , const System::UnicodeString Title = System::UnicodeString(), const System::UnicodeString FolderNameLabel = System::UnicodeString(), const System::UnicodeString OkButtonLabel = System::UnicodeString())
推荐使用此方法
?第一个参数:const System::UnicodeString StartDirectory,打开时的初始目录;
第二个参数:System::TArray__1<System::UnicodeString> &Directories,用来存储选择目录的动态数组;
第三个参数:TSelectDirFileDlgOpts Options = TSelectDirFileDlgOpts(),是一组选项,用于自定义SelectDirectory提示的"选择目录"对话框。
sdHidePinnedPlaces ? 从导航窗格的默认视图中隐藏项目。
sdNoDereferenceLinks ?允许您使用引用的符号链接。
sdForceShowHidden ?显示隐藏的文件和目录。
sdAllowMultiselect ?允许您在"选择目录"对话框中选择多个项目。
第四个参数:const System::UnicodeString Title = System::UnicodeString(),对话框的标题;
第五个参数:const System::UnicodeString FolderNameLabel = System::UnicodeString(),文件夹名称标签,可以直接转空;
第六个参数:const System::UnicodeString OkButtonLabel = System::UnicodeString(),确认按钮上的标签名。
#include <Vcl.FileCtrl.hpp>
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//方式二
UnicodeString sFolder;
System::DynamicArray<System::UnicodeString> folders;
sFolder = "C:\\temp";
if (SelectDirectory(sFolder, folders, TSelectDirFileDlgOpts(), L"选择XXX文件夹", L"", L"确认" )) {
sFolder = folders[0];
this->Edit2->Text = sFolder;
}
}
|