Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Folder. [D7, WinME, WinXP]


ASoft ©   (2004-12-10 12:05:00) 

Уважаемые мастера!
Не сочтите за труд, подскажите функцию открытия Change Folder в Windows.
До этого, я юзал компонент Disk Control.
Спасибо.


VMcL   (2004-12-10 12:58:00) [1]

MSDN, в принципе говорит, что:
> SHGetMalloc Function

--------------------------------------------------------------------------------

Not currently supported.

Remarks

This function should no longer be used. Use the CoTaskMemFree and CoTaskMemAlloc functions in its place.


DiamondShark   (2004-12-10 12:53:00) [2]


> GlobalFreePtr(lpItemID);

Ни разу не так.

var
 ...
 Malloc: IMalloc;
begin
 ...
 SHGetMalloc(Malloc);
 Malloc.Free(lpItemID);


ASoft   (2004-12-10 12:39:00) [3]

Cosinus ©
 Я как-то раз пробовал SHBrowseForFolder(), но что-то Delphi ругалась, щас не помню. Спасибо за инфу


Cosinus   (2004-12-10 12:15:00) [4]

Если я правильно понял вопрос, то...
uses
 ShellAPI, ShlObj;
...

procedure TForm1.Button1Click(Sender: TObject);
var
 TitleName : string;
 lpItemID : PItemIDList;
 BrowseInfo : TBrowseInfo;
 DisplayName : array[0..MAX_PATH] of char;
 TempPath : array[0..MAX_PATH] of char;
begin
 FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
 BrowseInfo.hwndOwner := Form1.Handle;
 BrowseInfo.pszDisplayName := @DisplayName;
 TitleName := 'Please specify a directory';
 BrowseInfo.lpszTitle := PChar(TitleName);
 BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
 lpItemID := SHBrowseForFolder(BrowseInfo);
 if lpItemId <> nil then
 begin
   SHGetPathFromIDList(lpItemID, TempPath);
   ShowMessage(TempPath);
   GlobalFreePtr(lpItemID);
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо