2018年3月29日 星期四

BCB 選擇路徑(資料夾)

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

0 意見:

張貼留言

Popular Posts