Forms Delphi

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ShlObj,ActiveX;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var BI:TBrowseInfo;
Buf:PChar;
Dir,Root:PItemIDList;
Alloc:IMalloc;
begin
SHGetMalloc(Alloc);
Buf:=Alloc.Alloc(Max_Path);
// Bu satir aranacak dizinleri sinirlar.
SHGetSpecialFolderLocation(Handle,CSIDL_PROGRAMS,Root);
with BI do
begin
hwndOwner:=Form1.Handle;
pidlRoot:=Root; // Eger Nil olursa, bütün dizinler
// görüntülenir.
pszDisplayName:=Buf;
lpszTitle:=' Istediginiz dizini seciniz';
ulFlags:=0;
lpfn:=nil;
end;
try
Dir:=SHBrowseForFolder(BI);
if Dir<>Nil then
begin
SHGetPathFromIDList(Dir,Buf); // Istenen dizinin tam adi
ShowMessage(Buf);
Alloc.Free(Dir);
end;
finally
Alloc.Free(Root);
Alloc.Free(Buf);
end;
end;
end.
Secilebilecek, diger özel Klasör tipleri
CSIDL_BITBUCKET Geri dönüsüm kutusu
CSIDL_CONTROLS Kontrol panel klasörleri
CSIDL_DESKTOP Masaüstü klasörleri
CSIDL_DESKTOPDIRECTORY Masaüstü nesnelerini barindiran klasör
CSIDL_DRIVES Bilgisayarim klasörü
CSIDL_FONTS Font klasörü
CSIDL_NETHOOD Ag komsulugu klasörü
CSIDL_NETWORK Yukaridakinin bir baska versiyonu
CSIDL_PERSONAL Sahsi klasör
CSIDL_PRINTERS Yazicilar klasörü
CSIDL_PROGRAMS Baslat menüsündeki programlar klasörü
CSIDL_RECENT Son kullanilan dökümanlar klasörü
CSIDL_SENDTO Gönder (SendTo) klasörü
CSIDL_STARTMENU Baslat menüsünün tümü
CSIDL_STARTUP Otomatik baslat klasörü
CSIDL_TEMPLATES Döküman sablonlari