OpenDialog 를 이용해 파일을 선택하듯이 디렉토리를 선택하는 Dialog 가 있는 줄 알았는데 VCL에는 없다.

대신 해당 기능을 수행하는 함수가 있음.

 

SelectDirectory (두둥!)

 

아래는 BDS Help 에 있는 내용

 

[Delphi] function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Integer): Boolean; overload;

[Delphi] function SelectDirectory(const Caption: string; const Root: WideString; var Directory: string; Options: TSelectDirExtOpts; Parent: TWinControl): Boolean; overload;

 

보시다시피 overload 된 두가지가 있는데 하나는 열라 허접한 창이 뜬다.

첫번째 것이 열라 허접한 창이고 두번째것은 그냥 윈도우즈가 제공하는 디렉토리 선택창인듯.

여하튼 쓸려면 FileCtrl 을 uses 에 추가해야 하는데 specific to a platform 이라는 Warning 이 자꾸 떠서 약간 신경거슬림.

 

아래는 두번째것을 사용한 예제로 각 파라메터는

const Caption: String => 디렉토리 선택창의 캡션

const Root: WideString => 뭔가 가둬두는 모양이다. 'C:\' 같은 식으로 하면 C:\ 내에서만 선택이 가능하다.

var Directory: String => 선택된 경로를 담을 스트링의 포인터

나머지 파라메터들은 안써도 무방하다.

 

예제)

// 버튼을 클릭하고 경로선택 Dialog 에서 경로를 선택한 후

// edtSavePath 라는 에디트박스에 선택한 경로를 보여주는 예제임 

procedure TForm1.Button1Click(Sender: TObject); 

var s: String

begin

   // s 가 var 형으로 선택된 경로가 저장된다. 간단해서 좋음.

if SelectDirectory('경로 선택','',s) then edtSavePath.Text:=s;

end;

 





Posted by bloodguy
,