Delphi для всех

Вывести диалог "Обзор папок"

Для вывода диалога "Обзор папок" существует функция SHBrowseForFolder. Для выбора того, какие папки будут выведены в диалоге, используется функция SHGetSpecialFolderLocation. В этой программе выводится рабочий стол со всеми подпапками (папки рабочего стола, Мой компьютер, Корзина). Для выбора папки в меню пуск используется CSIDL_STARTMENU вместо CSIDL_DESKTOP.

uses ShlObj;

procedure CallBack(wnd: hWnd; uMsg: UINT; lParam, lpData: LParam) stdcall;
begin
SendMessage(wnd, BFFM_ENABLEOK, 0, 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
bi: TBrowseInfo;
s: PChar;
PIDL, ResPIDL: PItemIDList;
begin
SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, PIDL);
s := StrAlloc(128);
bi.hwndOwner := Form1.Handle;
bi.pszDisplayName := s;
bi.lpszTitle := 'Выбор прапки';
bi.pidlRoot := PIDL;
bi.lpfn := addr(CallBack);
ResPidl := SHBrowseForFolder(BI);
SHGetPathFromIDList(ResPidl, s);
Form1.Caption := s;
end;

                                                                                                                                                                                                                                                                    
Хостинг от uCoz