Проводник для компьютеров, директорий, файлов и принтеровDelphi , Файловая система , ФайлыПроводник для компьютеров, директорий, файлов и принтеров
Обзор (Browse) В Windows есть несколько способов отобразить структуру директорий на компьютере. Большинство программистов Delphi знают, как пользоваться компонентой TOpenDialog, чтобы предоставить возможность пользователю перед открытием файла предварительно просматривать структуру директорий. Однако, используя API функцию SHBrowseForFolder мы можем заставить стандартный диалог Windows осуществлять просмотр не только директорий на диске, но и принтеров и компьютеров в сети. Сперва давайте посмотрим, что необходимо для SHBrowseForFolder. Вот объявление функции:
Вся информация для инициализации и настройки диалогового окна Browse For Folder передаётся через переменную типа BrowseInfo. Сама же функция нам возвратит список ID элементов (скажем: местоположение выбранной папки). Теперь давайте посмотрим, как заполнить структуру записей информацией, которая необходима для инициализации диалогового окна Browse for Folder, а затем вызовем SHBrowseForFolder для отображения диалогового окна. Структура BrowseInfo Основные элементы структуры, это поля lpszTitle и ulFlags. Поле lpszTitle - это текст, в виде статического текстового элемента управления (static text control) над деревом (treeview). Элемент ulFlags определяет флаги, которые задают режим отображения диалога. Флаги позволяют сделать диалог более юзабельным, чем просто отображение директорий. В таблице приведены некоторые флаги, которые позволяют расширить возможности диалога Browse For Folders: Значение Назначение
Например, для просмотра как директорий, так и файлов, необходимо установить ulFlags в BIF_BROWSEINCLUDEFILES. Код для Delphi Когда мы поместим всё вышеописанное в функцию Delphi, которая будет создавать структуру, инициализировать её, и вызывать SHBrowseForFolder() для отображения диалогового окна, то она будет выглядеть следующим образом:
Функция BrowseDialog имеет на входе два параметра: Title и Flag. Title - это текст над деревом (поле lpszTitle в записи BrowseInfo). Параметр Flag используется для заполнения поля ulFlags. Теперь эту функцию можно вызвать (для отображения директории, выбранной пользователем) следующим образом:
Обратите внимание: На форме (с именем: frMain) присутствует компонент RadioGroup (группа радио кнопок (с именем: rgBrowseFor)) который имеет четыре элеемента, каждый из которых представляет значение для переменной Flag. Функция извлекает из lpItemID путь к выбранной папке и возвращает его (заполнив компонент текстового поля edSelected). Если функция вернула ошибку (или пользователь нажал кнопку Cancel), то возвращённая строка будет пустой. Проводник для компьютеров, директорий, файлов и принтеров позволяет отобразить структуру каталогов на компьютере с помощью функции SHBrowseForFolder и управлять диалогом с помощью параметров ulFlags. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
|||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |