就像千千静听的"添加目录"的目录选择框那样.

解决方案 »

  1.   

    换个控件 比如:shelltreeview
      

  2.   

    使用opendialog 控件 
    初始目录:opendialog1.InitialDir:=extractfilepath(application.ExeName)+'TTPlayer\';
      

  3.   

    uses   FileCtrl;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   Path:string;   
      begin   
          if   SelectDirectory('You   Must   Select   a   Directory   for   me,hehe','',Path)   then   
                ShowMessage('You   Select   Directory   is:'+Path);   
      end;   
      

  4.   


    我想用DFS 的 TSystemTreeView 但网上已绝迹,不知哪里有!哪位提供个地址?
      

  5.   

    哦!已经解决!谢谢各位!
    代码如下:(以下两个函数定义需要在uses中引入两个单元ShlObj,Windows;)function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
    begin
    case uMsg of
        BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);
    end;
    Result := 0;
    end;function BrowsFolder(const Folder: string): string;
    var
    TitleName: string;
    lpItemID: PItemIDList;
    BrowseInfo: TBrowseInfo;
    DisplayName: array[0..MAX_PATH] of char;
    TempPath: array[0..MAX_PATH] of char;
    begin
    Result := Folder;
    FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
    BrowseInfo.hwndOwner := GetActiveWindow;
    BrowseInfo.pszDisplayName := @DisplayName;
    TitleName := '请选择一个目录';
    BrowseInfo.lpszTitle := PChar(TitleName);
    BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
    BrowseInfo.lpfn := BrowseCallbackProc;
    BrowseInfo.lParam := Integer(PChar(Folder));
    lpItemID := SHBrowseForFolder(BrowseInfo);
    if Assigned(lpItemId) then
    begin
        SHGetPathFromIDList(lpItemID, TempPath);
        GlobalFreePtr(lpItemID);
        Result := string(TempPath);
    end
    else
        Result:='';
    end;函数BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。     BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数。在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。