Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

SHBrowseForFolder   Найти похожие ветки 

 
Cosmic   (2002-12-04 23:26) [0]

Привет мастерам! Дайте примерчик SHBrowseForFolder, плиз, - никак не могу разобраться!


 
apay   (2002-12-05 00:14) [1]

Посмотри хотя-бы в RxLib, а вообще таких компонент много, можешь сходить на www.torry.net


 
Dimka Maslov   (2002-12-05 09:35) [2]

http://endimus.com/oldcontent/files/index_en.php?page=tbrowseforfolder.htm


 
Cosmic   (2002-12-05 23:25) [3]

> Dimka Maslov
Мне не нужна VCL. Мне нужны средства ShellAPI. Хотя компонент интересный... Спасибо. Может, и на API примерчик найдётся?


 
Evgeny   (2002-12-06 11:53) [4]

program Shell_pr;

uses
SysUtils,
Windows,
ActiveX,
ShlObj;

var
Malloc : IMalloc;
Desktop : IShellFolder;
pidlMyComputer : PItemIDList;
pidlResult : PItemIDList;
pidlInitialFolder : PItemIDList;
bi : TBrowseInfo;
DisplayName : string;
Temp : string;

function BrowseCallbackProc(hWnd: HWND; uMsg: UINT;
lParam: LPARAM; lpData: LPARAM): Integer; stdcall;
// обратите внимание на соглашение о вызовах - stdcall
begin
Result := 0;
case uMsg of
BFFM_INITIALIZED:
begin
PostMessage(hWnd, BFFM_SETSELECTION, 0, Integer(pidlInitialFolder));
PostMessage(hWnd, BFFM_SETSTATUSTEXT, 0,
Integer(PChar("Функция обратного вызова установлена.")));
end;
end;
end;

begin
// acquire shell"s allocator
if SUCCEEDED(SHGetMalloc(Malloc)) then
try
// acquire shell namespace root folder
if SUCCEEDED(SHGetDesktopFolder(Desktop)) then
try
// acquire folder that will be serve as root in dialog
if SUCCEEDED(SHGetSpecialFolderLocation(0, CSIDL_DRIVES, pidlMyComputer)) then
try
SetLength(DisplayName, MAX_PATH);
FillChar(bi, sizeof(bi), 0);
bi.pidlRoot := pidlMyComputer; // roots from "My Computer"
bi.pszDisplayName := PChar(DisplayName);
bi.lpszTitle := PChar("Выберите каталог для сканирования");
bi.ulFlags := {BIF_RETURNONLYFSDIRS + }BIF_STATUSTEXT + BIF_BROWSEINCLUDEFILES;
bi.lpfn := BrowseCallbackProc;
pidlResult := SHBrowseForFolder(bi);
if Assigned(pidlResult) then
try
SetLength(Temp, MAX_PATH);
if SHGetPathFromIDList(pidlResult, PChar(Temp)) then
DisplayName := Temp;
DisplayName := Trim(DisplayName) + ".";
MessageBox(0, PChar(DisplayName), "Вы успешно выбрали папку",
MB_OK or MB_ICONINFORMATION );
finally
Malloc.Free(pidlResult); // release returned value
end;
finally
Malloc.Free(pidlMyComputer); // release folder that was served as root in dialog
end;
finally
Desktop := nil; // release shell namespace root folder
end;
finally
Malloc := nil; // release shell"s allocator
end;
end.


 
Nick_N_A   (2003-01-16 07:51) [5]

Внимательно посмотри прилагаемую с Delphi windows.pas



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.043 c
8-5667
pasha676
2002-11-21 11:00
2003.03.03
DirectShow DSPack 2.0 вопросы.


9-5375
Стас
2002-09-06 13:58
2003.03.03
навигация в космосе


14-5740
dobriy
2003-02-15 09:18
2003.03.03
проблема с функциями


14-5712
Ork
2003-02-07 13:31
2003.03.03
Компоненты


3-5472
E_Dimon
2003-02-12 23:49
2003.03.03
SQL Запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский