function SelectPath(const Title: string): string; var bi: TBrowseInfo; //uses ShlObj IdList: PItemIDList; begin result := ''; FillChar(bi, SizeOf(bi), 0); bi.hwndOwner := 0; bi.lpszTitle := PChar(Title); bi.ulFlags := BIF_RETURNONLYFSDIRS{ + BIF_DONTGOBELOWDOMAIN}; IdList := SHBrowseForFolder(bi); if IdList<>nil then begin SetLength(result, 255); SHGetPathFromIDList(IdList, PChar(result)); result := string(pchar(result)); if result<>'' then if result[Length(result)] <>'\' then result := result + '\'; end; end;
至于这么麻烦吗?Uses FileCtrlprocedure TForm1.Button1Click(Sender: TObject); var path:string; begin if SelectDirectory('','',Path) then Edit1.Text:=path; end;
var
bi: TBrowseInfo; //uses ShlObj
IdList: PItemIDList;
begin
result := '';
FillChar(bi, SizeOf(bi), 0);
bi.hwndOwner := 0;
bi.lpszTitle := PChar(Title);
bi.ulFlags := BIF_RETURNONLYFSDIRS{ + BIF_DONTGOBELOWDOMAIN};
IdList := SHBrowseForFolder(bi);
if IdList<>nil then
begin
SetLength(result, 255);
SHGetPathFromIDList(IdList, PChar(result));
result := string(pchar(result));
if result<>'' then
if result[Length(result)] <>'\' then
result := result + '\';
end;
end;
var path:string;
begin
if SelectDirectory('','',Path) then Edit1.Text:=path;
end;