Главная arrow IDE Delphi arrow Диалог выбора директории  
19.05.2012
Главное меню
Главная
Лаборатория
Книги по дельфи
Инструменты
Статьи
Видео
Юмор
Ссылки
Поиск
База знаний Delphi
Общие вопросы
Windows, WinAPI
Графика, Звук
IDE Delphi
Консоль
Авторизация





Забыли пароль?
Вы не зарегистрированы. Регистрация
Каталог@Mail.ru - каталог ресурсов интернет
Диалог выбора директории Версия для печати
Рейтинг: / 8
ХудшаяЛучшая 
Написал Snowy   
04.05.2011
Функция выбора каталога принимает на входе 3 параметра:
  • Заголовок диалога
  • Папку, выбранную по умолчанию
  • Хэндл родительского окна
Возвращает выбранный путь или пустую строку, в случае отмены выбора.
 
function BrowseForFolder (const caption: String; folder: String; FormHandle: THandle): String;
  function BFFCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData: LPARAM): integer; stdcall;
  begin
    if uMsg = BFFM_INITIALIZED then SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
    result := 0;
  end;
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 := FormHandle;
  BrowseInfo.pszDisplayName := @DisplayName;
  TitleName := Caption;
  BrowseInfo.lpszTitle := PChar(TitleName);
  BrowseInfo.ulFlags := bif_NewDialogStyle;
  BrowseInfo.lpfn := @BFFCallbackProc;
  BrowseInfo.lParam := dword(pchar(folder));
  lpItemID := SHBrowseForFolder(BrowseInfo);
 if lpItemId <> nil then
  begin
    SHGetPathFromIDList(lpItemID, TempPath);
    GlobalFreePtr(lpItemID);
    Result := TempPath;
  end
   else
    Result := '';
end;
Пример вызова:
path := BrowseForFolder('Select a folder, please', 'C:\Temp', Handle);
Добавить новыйПоиск
Serge   2011-10-06 16:46:46
Для работы данной функции нужно добавить в раздел uses ShlObj
комментарии
Имя:
Заголовок:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Security Image
Пожалуйста, введите проверочный код, который Вы видите на картинке.
 
След. >