SelectDirectory ,see delphi help

解决方案 »

  1.   

    function SelectDirectory(const Caption: WideString; const Root: string; var Directory: string): Boolean;Unit:
    QDialogs
      

  2.   

    uses  QDialogs;
    procedure TForm1.Button1Click(Sender: TObject);
    const a='选择';b='d:\' ;
    var c:string;
    begin
    if  SelectDirectory(a,b,c) then close;
    end;
      

  3.   

    uses shlobj ;function MyBrowse(const winhandle : THANDLE; const title : string) : string;
    var
      BrowseInfo: TBrowseInfo;
      IDRoot: PItemIDList;
      Path: array[0..MAX_PATH] of Char;
    begin
      SHGetSpecialFolderLocation(winHandle, CSIDL_DRIVES, IDRoot);
      //CSIDL_NETWORK 浏览计算机
      //CSIDL_PRINTERS 浏览打印机
      //其它可查MSDN
      ZeroMemory(@BrowseInfo, SizeOf(TBrowseInfo));
      ZeroMemory(@path, MAX_PATH);
      BrowseInfo.hwndOwner := winhandle;
      BrowseInfo.pidlRoot := IDRoot;
      BrowseInfo.lpszTitle := PChar(title);
      BrowseInfo.pszDisplayName := @path;
      BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS ;
      //BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
      SHBrowseForFolder(BrowseInfo);
    end;
      

  4.   

    uses FileCtrl;procedure TForm1.Button1Click(Sender: TObject);
    var
      dir:String;
    begin
      SelectDirectory('请选择文件夹','',dir);
    end;
      

  5.   

                   两种选择目录对话框{uses ShlObj,FileCtrl}
    var
      BrowseInfo: TBrowseInfo;
      pIDLst: PItemIDList;
      Dir: array[0..MAX_PATH-1] of char;
    begin
      FillChar(Dir, SizeOf(Dir), 0);
      with BrowseInfo do
      begin
        hwndOwner := Handle;
        pidlRoot := nil;
        pszDisplayName := nil;
        lpszTitle := '请选择目录';
        ulFlags := 0;
        lpfn := nil;
        lParam := 0;
        iImage := 0;
      end;
      pIDLst := SHBrowseForFolder(BrowseInfo);
      SHGetPathFromIDList(pIDLst, @Dir);
      ShowMessage(Dir);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      Dir:string;
    begin
      if selectdirectory('请选择目录','/',dir)=False then exit;
      ShowMessage(Dir);
    end;