Вывод диалога для выбора каталога 2
Автор: K.Grudnev@tnet.sochi.ru
функция Shell32.dll SHBrowseForFolder.
var
Form1: TForm1;
Shell: IShellForlder;
HRES: HResult;
procedure CallBack(Wnd: HWnd; uMsg: Uint; lParam, lpData: LPARAM);
stdcall;
var
S: string;
begin
S := 'Выберите папку для установки программы';
SendMessage(Wnd, BFFM_SetStatusText, 0, LongInt(@S[1]));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
InfoType: Byte;
BI: TBrowseInfo;
S: PChar;
Image: Integer;
PIDL: PItemIDList;
Path: array[0..MAX_PATH - 1] of WideChar;
ResPIDL: PItemIDList;
begin
SHGetSpecialFolderLocation(Handle, CSIDL_PROGRAMS, PIDL);
S := StrAlloc(128);
with BI do
begin
hWndOwner := Form1.Handle;
pszDisplayName := S;
lpszTitle := 'Поиск Папки';
ulFlags := BIF_StatusText;
pidlRoot := PIDL;
lpfn := @CallBack;
iImage := Image;
end;
ResPIDL := SHBrowseForFolder(BI);
SHGetPathFormIDList(ResPIDL, @Path[0]);
Edit1.Text := StrToPas(@PAth[0]);
StrDispose(S);
end;
|
|