BCB 選擇路徑(資料夾)
工作關係要將各式各樣的資料彙整並輸出
各式各樣的資料都放在同一目錄下
所以在設計程式就必須設計可以給使用者選擇目錄
但BCB10似乎沒有這種元件
(其實有 DirectoryListBox 但我駕馭不了)
於是Google發現大家用的是 SelectDirectory();
網路上大大們說有 2 種版本
Boolean SelectDirectory(AnsiString Directory, TSelectDirOpts Options, Longint HelpCtx);
Boolean SelectDirectory(const AnsiString Caption, const BSTR Root, AnsiString Directory, TSelectDirExtOpts Options = [sdNewUI], TWinControl * Parent = nil);
一個是 Windows 的對話框,一個是 BCB 自己的
但我試不出來兩個似乎都長一樣
不知道是 BCB10 的改動還是我用錯
以下是程式碼 ( 第2種版本 )
#include <vcl .filectrl.hpp>
void __fastcall TMainForm::BitBtn1Click(TObject *Sender)
{
String str;
TSelectDirExtOpts opt;
opt += TSelectDirExtOpts()<<sdShowEdit;
opt += TSelectDirExtOpts()<<sdValidateDir;
if (SelectDirectory(L"Please Select a Directory", L"", str, opt, this))
LabeledEdit1->Text = str;
}
SelectDirectory 共輸入了 5 個參數
第一個 Caption = 對話框顯示的字
第二個 Root = 根路徑
第三個 Directory = 選擇的字串
第四個 Options = 對話框樣式
第五個 不清楚,自己理解是 選擇 this 等於我按"這個" Button 這元件就會跳出來
其中 TSelectDirExtOpts 參數可以參考官方文件
參考資料
http://hcl123.blogspot.tw/2012/09/using-open-directory-dialog-box-in-bcb.html
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/FileCtrl_SelectDirectory@string@TSelectDirOpts@Longint.html