نحوه نمايش Browse For Folder DialogBox

شما احتمالا برنامه هايي را ديده ايد كه يك ديالوگ به اسم Browse For Folder مياورند كه همه درايوها و دايركتوري هاي سيستمتان در آن نمايش داده شده و شما بايد يك دايركتوري انتخاب كنيد. يا خود ويندوز هم موقع ToolBar اضافه كردن به TaskBar هم اين كارو ميكنه يا مثلا winamp هم اين ديالوگ رو نمايش ميده. براي نمايش چنين ديالوگي، بايد از توابع SHBrowseForFolder و SHGetPathFromIDListA استفاده كرد.
مثال:
procedure TForm1.Button1Click(Sender: TObject);
var bi:_browseinfoA;
pidl1:PItemIDList;
p1:Array[0..1024]of char;
begin
with bi do
begin
hwndOwner :=handle;
pidlRoot :=nil;
pszDisplayName :='Please Select Folder';
lpszTitle :='Select Folder';
ulFlags :=bif_editbox;
lpfn :=nil;
lParam :=0;
iImage :=0;
end;
ابتدا يك ساختار _BrowseInfoA پر ميكنيم.
pidl1:=SHBrowseForFolder(bi);
سپس با اين تابع، ديالوگ را نمايش مي دهيم و نتيجه درون PIDL1 ميرود.
SHGetPathFromIDListA(pidl1,@p1);
سپس با اين تابع، مقدار PIDL1 را به رشته تبديل ميكنيم.
edit1.text:=p1;

end;   
نویسنده : محمد ; ساعت ۱۱:٥٢ ‎ب.ظ روز دوشنبه ٢٦ خرداد ،۱۳۸٢