本文整理自网络,侵删。
仔细研究发现原来是_browseinfoA类型变成了BROWSEINFO类型
其他基本不用变
uses ShlObj;
function SelectFolderDialog(const Handle:integer;const Caption:string;
const InitFolder:string;var SelectedFolder:string):boolean;
var
BInfo: BROWSEINFO;
Buffer: array[0..MAX_PATH] of Char;
ID: IShellFolder;
Eaten, Attribute: Cardinal;
ItemID: PItemidlist;
begin
with BInfo do
begin
HwndOwner := Handle;
lpfn := nil;
lpszTitle := PWideChar(Caption);
ulFlags := BIF_RETURNONLYFSDIRS+BIF_NEWDIALOGSTYLE;
SHGetDesktopFolder(ID);
ID.ParseDisplayName(0,nil,'\',Eaten,ItemID,Attribute);
pidlRoot := ItemID;
GetMem(pszDisplayName, MAX_PATH);
end;
if SHGetPathFromIDList(SHBrowseForFolder(BInfo), Buffer) then
begin
SelectedFolder := Buffer;
if Length(SelectedFolder)<>3 then
SelectedFolder := SelectedFolder;
result := True;
end
else begin
SelectedFolder := '';
result := False;
end;
end;
调用方法:
procedure TForm1.Button1Click(Sender: TObject);
var
NewDir:string;
begin
if SelectFolderDialog(Handle,'选择目录','C:\',NewDir) then
Label1.Caption:=NewDir;
end;
相关阅读 >>
Delphi idhashmessagedigest, idhash, idglobal md5
Delphi2010中Delphi class explorer妙用
更多相关阅读请进入《Delphi》频道 >>