Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Вывод диалога для выбора каталога

Delphi , Файловая система , Директории

Вывод диалога для выбора каталога


Разговаривают два юзера.
- Я слышал, что если проиграть CD-ROM c Виндоуз 2000 в обратную сторону, то получится послание от сатаны!
- Куда страшней другое: если ты проиграешь его как надо, то инсталлируется Виндоуз 2000...


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;

Программный код на Delphi, который реализует диалоговое окно для выбора каталога. Программа использует Windows API для создания диалогового окна просмотра, позволяющего пользователю выбрать каталог.

Код определяет несколько переменных:

  • TitleName: строковая переменная, установленная в 'Please specify a directory', которая будет отображаться как заголовок диалогового окна.
  • BrowseInfo: экземпляр рекорда типа TBrowseInfo, который содержит информацию о диалоговом окне. Свойства этого рекорда:
    • hwndOwner:.handle окна, которое владеет диалогом (в этом случае - основной форм).
    • pszDisplayName: указатель на строковую переменную (@DisplayName), которая будет отображать имя выбранного каталога.
    • lpszTitle: указатель на строковую переменную (PChar(TitleName), которая задает заголовок диалогового окна.
    • ulFlags: целочисленное значение, установленное в BIF_RETURNONLYFSDIRS, которое specifies, что только папки (каталоги) должны отображаться в диалоговом окне.
  • lpItemID: указатель на рекорд типа PItemIDList, который будет хранить ID выбранного элемента.

Затем код вызывает функцию SHBrowseForFolder с рекордом BrowseInfo как аргументом. Эта функция создает и отображает диалоговое окно просмотра.

Если пользователь выбирает каталог, переменная lpItemID не равна nil, что указывает на то, что было сделано валидное выбранное. Код затем использует функцию SHGetPathFromIDList для преобразования ID списка выбранного элемента в строку пути (TempPath). Наконец, он отображает это путь в сообщении с помощью процедуры ShowMessage.

Функция GlobalFreePtr используется для освобождения памяти, выделенной для lpItemID.

В целом, этот код создает диалоговое окно, позволяющее пользователю выбрать каталог, и затем отображает выбранный путь в сообщении.

В статье описывается создание диалога для выбора каталога в приложении на языке Delphi с использованием компонентов ShellAPI и ShlObj.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:56:28/0.003242015838623/0