Содержание материала

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

Code:

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;

 

 

Автор советов: Даниил Карапетян

e-mail: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

 

Автор справки: Алексей Денисов

e-mail: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить