Delphi directorylistbox обзор всего компьютера

Обновлено: 07.07.2024

В Windows имеется стандартное приложение «Проводник», однако в Delphi имеются компоненты позволяющие построить из них аналогичное приложение.

Delphi предоставляет программисту 4 компонента, которые можно использовать для работы с файлами и каталогами которые располагаются на палитре Win3.1:

Компонент DirectoryListBox1 Отображает информацию о текущем каталоге и предоставляет пользователю изенять данные установки. В большинстве случаев данный компонент используется совместно с компонентом FileListBox1

Компонент DriveComboBox1 Отображает все дисководы в системе, позволяет выбрать один из них. В большинстве случаев данный компонент используется совместно с компонентом DirectoryListBox1, поэтому пользователь имеет возможность перейти к другому устройству и просмотреть его каталоги.

Компонент FileListBox1 Отображает файлы в текущем каталоге, может либо выводить информацию обо всех файлах, либо выбирать для отображения группу файлов, используя фильтры, например *.pas или *.txt. Данный компонент обычно связывается с элементом Edit, предоставляя пользователю возможность вводить и редактировать имена файлов.

Компонент FilterComboBox1 Содержит фильтры, которые пользователь может выбирать для того, чтобы ограничить набор файлов, отображаемых компонентом FileListBox1.

Задание 1 Изучение 4 – ёх перечисленных компонентов

Создайте новый проект. Сбросьте DirectoryListBox1 на форму справа, а FileListBox1 слева, а также DriveComboBox1 справа и FilterComboBox1 слева. А также кнопку Button1. Всё должно выглядеть следующим образом:


Рис. 1 Окно приложения «Микропроводник»

Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы можете легко перемещаться по папкам, однако файлы содержащиеся в текущем каталоге компонента DirectoryListBox1 не отображаются в FileListBox1. Исправим это. Вернитесь в РП (Режим программирования)

Настроим компонент DirectoryListBox1 на FileListBox1, так чтобы при навигации по папкам в FileListBox1 отображались файлы, находящиеся в текущем каталоге DirectoryListBox1.

В обработчике FormCreate формы напишите:

Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы обнаружите, что файлы содержащиеся в текущем каталоге компонента DirectoryListBox1 начали отображаться в FileListBox1. Однако вы не можете перемещаться по жестким дискам. Вернитесь в РП.

Для навигации по жестким дискам, дисководам, и т.д. следует настроить компонент DriveComboBox1 на DirectoryListBox1.

В обработчике FormCreate формы к уже написанному, допишите следующее:

Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы обнаружите, что владеете полной навигацией по всем каталогам, всех дисков. Вернитесь в РП.

Далее поместите на форму несколько компонентов Label, а также Edit1 над компонентом FileListBox1 (рис 2)


Рис. 2 Добавляем компоненты TLabel для отображения

полной информации при навигации по папкам с файлам

Будем в Label1 выводить обрезанный путь к файлу, а в Label2 полный путь.

В обработчике FormCreate формы к уже написанному, допишите следующее:

DirectoryListBox1.DirLabel:=Label1; //Настраиваем DirectoryListBox1.DirLabel на

Label2.Caption:= DirectoryListBox1.Directory; // просто выводим путь в Caption

Запустите программу. Убедитесь в правильности ее работы. Вернитесь в РП.

При навигации по файлам, часто используется окно редактирования, здесь в его качестве используется обычный компонент Edit1. После запуска программы, в окне отображается фильтр *.*, который выбирает все файлы каталога, а также отображает имена выбранных файлов.

В обработчике FormCreate формы к уже написанному, допишите следующее:

FileListBox1.FileEdit:=Edit1; // Настраиваем FileListBox1.FileEdit на Edit1

Запустите программу. Убедитесь в правильности ее работы. Вернитесь в РП.

Конечно же, часто требуется выбор файлов по заданному расширению который обеспечивает компонент FilterComboBox1. Зайдите в его свойство Filter и укажите следующие типы расширений:


Рис. 3 Задаем расширения файлов которые будут отображаться в FileListBox1

В обработчике FormCreate формы к уже написанному, допишите следующее:

Запустите программу. Убедитесь, что изменение расширения влияет на отображаемые файлы в FileListBox1. Вернитесь в РП.

В общем случае чтобы обратиться к имени выбранного файла нужно обратиться к свойству FileName компонента FileListBox1.

Войдите в обработчик щелчка FileListBox1Click и напишите там следующее:

Запустите программу. Убедитесь, что при выборе файла его имя отобразится на экране. Вернитесь в РП.

Теперь, здесь же в обработчике данного щелчка закомментируйте эту инструкцию (поставьте перед ней комментарии // или <>), чтобы компилятор её не воспринимал:

Если не требуется информация о полном пути, содержащемся в строке FileListBox1.FileName то её можно обработать одной из функций Delphi для управления файлами: ExtractFileExt, ExtractFileName и ExtractFilePat.

Сделаем это, путем присвоения значений работы этих функций соответствующим свойствам Caption компонентов Label3, Label4 и Label5.

Здесь же в обработчике данного щелчка допишите следующее:

with FileListBox1 do begin

Запустите программу. Изучите что делает, какая функция. Вернитесь в РП.

Далее, чтобы можно было выбирать несколько файлов в FileListBox1 установите значение его свойства MultiSelect в True.

Теперь при запуске программы можно мышкой выделять несколько файлов, а если удерживать Ctrl можно выбирать мышкой разные файлы.

Запустите программу. Убедитесь, что можно выбирать несколько файлов. Вернитесь в РП.

Интерес представляет выявление списка выбранных файлов, чтобы потом передать их приложению. Поэтому сбросьте ListBox1 (палитра Standard), а также Button1 (установите Caption в “Run”) на форму


Рис. 4 Добавляем компонент ListBox1 для отображения в

нём выбранных файлов в FileListBox1

Будем определять все выбранные файлы и помещать их в список компонента ListBox1

Всё здесь же, в обработчике щелчка FileListBox1Click допишите следующее:

ListBox1.Clear; // Каждый раз очищаем ListBox1

with FileListBox1, Items do begin//Работаем с массивом Items компонента FileListBox1

If SelCount>0 then // Если выбран один или более элемент массива (файл )

for i:=0 to Count-1 do // то, Пробегаем по индексам массива Items и если

If Selected[i] then // попался выбранный(выделенный) элемент массива

ListBox1.Items.Add(Items[i]); // Добавляем его в ListBox1

Не забывайте что в данный обработчик следует добавить ключевое слово Var, так как появилась переменная i типа integer. В общем виде весь обработчик должен выглядеть так:

procedure TForm1.FileListBox1Click(Sender: TObject);

with FileListBox1 do begin

with FileListBox1, Items do begin

If SelCount>0 then

for i:=0 to Count-1 do

If Selected[i] then

Запустите программу. Убедитесь, что при выборе нескольких файлов они отображаются в ListBox1. Вернитесь в РП.

Задание 2 Запуск Программ

Одной навигации по файлам мало. Интерес представляет возможность запустить любое внешнее приложение из своей собственной программы.

В Windows существует такое понятие как WIN API Application Program Interface – Интерфейс Прикладного Программирования представляющий из себя большой набор системных процедур и функций операционной системы.

Одна из часто используемых и полезных функций WIN API является функция ShellExecute, она объявлена следующим образом:

ShellExecute(Wnd: HWnd; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): THandle;

Функция возвращает дескриптор (в данном случае разновидность указателя) открытого приложения. Если возвращаемое значение меньше или равно 32 это указывает на ошибку.

Wnd – Дескриптор родительского окна из которого запускаются внешние приложения

Operation – Указатель на строку с нулевым символом в конце, строка может содержать «open» или «print». Если данный параметр равен nil по умолчанию выполнится операция «open»

FileName – имя файла

Parameters – передаваемые параметры, часто nil

ShowCmd – режим открытия файла, может иметь 12 значений, перечислим 4:

Окно делается невидимым

SW_MINIMIZE

Свертывает окно

Активизирует и отображает окно в его текущей позиции с текущими размерами

SW_SHOWMINNOACTIVE

Отображает окно в виде пиктограммы

Функция ShellExecute позволяет выполнить любое приложение Windows. Можно также открыть файл и если с ним сопоставлено любое приложение оно запустится.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Загрузка. Пожалуйста,
подождите.

Репутация: 1
Всего: 3

Как в компоненте DirectoryListBox получить имя текущёй (веделеной) папки?
Можно рассмотреть и другой компонент (в пределах разумного)

Репутация: 50
Всего: 372

Hellen, имя это это:

Репутация: 1
Всего: 3

Нет не совсем, дело в том что ExtractFileName(DirectoryListBox1.Directory) выдает имя открытой папки, а мне необходимо выделеной

Добавлено через 3 минуты и 16 секунд
надо что то типа: ExtractFileName(DirectoryListBox1.Selected)

Репутация: 11
Всего: 130

Не боимся экспериментировать, побольше творчества во всём!

Репутация: 50
Всего: 372

Репутация: 1
Всего: 3

Но ведь можешь когда хочешь.
А если ещё и комментарии появятся к коду будет ваще всё супер.

Репутация: 11
Всего: 130

Открою страшную тайну: до того момента, как ты спросила, я даже не знал, как сиё проделать. Но опытным путём - кидание на форму компонента и вникание в его свойства - можно добиться невообразимых успехов
у женщин !

А что там комментировать-то, всего одна строчка!

Репутация: 50
Всего: 372

Так. Стоп. Я нипонял

Требовалось получить путь или имя папки?
Ведь кодДанкинга выдает полный путь открытой папки.

Репутация: 1
Всего: 3

Я тоже перебирала методы, функции и свойства этого компонента, но так как у меня опыта маловато я бы это делала до китайской пасхи.

Попробую сама.
GetItemPath - это функция типа integer
itemindex - это процедура в свойствах компонента. тоже тип integer.
Тока почему она без проблем залезла у меня в стринговскую переменную.

Добавлено через 1 минуту и 35 секунд

Цитата

Ведь кодДанкинга выдает полный путь открытой папки

Нет, как раз код Данкинга выдаёт имя выделеной папки.
А твои скобки не прокатывают пчмуто.

Добавлено через 3 минуты и 18 секунд

Репутация: 11
Всего: 130

Добавлено через 1 минуту и 48 секунд
Зачем лишние переменные? Не проще сразу:

Репутация: 1
Всего: 3

Подскажи, как мне перейти на дирикторию вверх.
Это будет что то типа: (itemindex-1)??

Добавлено через 3 минуты и 36 секунд

Репутация: 11
Всего: 130


Вероятно, только смотри, чтобы ошибка не вывалилась, когда переходишь к несуществующему каталогу. К тому же, вероятно, нумерация начинается с 0 (я так думаю, но точно не знаю).

Репутация: 5
Всего: 11

user posted image

Репутация: 22
Всего: 50

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Эти компоненты расположены в разделе Win 3.1, и с их помощью программа может получать доступ к диску и выводить на экран информацию о диске, каталоге, фильтре файлов и именах файлов. Обычно эти компоненты используются одновременно для предоставления пользователю возможности выбрать нужный ему файл. Если пользователь выделяет в элементе управления TDriveComboBox (Область просмотра диска) определенную букву диска, компоненты TDirectoryListBox (Область списка каталогов) и TFileListBox (Область списка файлов) автоматически изменяются.

Свойство DirList компонента TDriveComboBox связывает его с компонентом TDirectoryListBox. Свойство Drive определяет текущую выделенную букву диска, а свойство Text содержит имя тома.

Свойство Drive компонента TDirectoryListBox определяет диск, структуру которого этот компонент выводит на экран. Текущий каталог компонента определяет свойство Directory. Свойство FileLisl связывает компонент TDirectoryListBox С TFileListBox.

Компонент TFilterComboBox (Область просмотра фильтров) предоставляет набор предопределенных фильтров файлов. Свойство Filter содержит все фильтры файлов, выводимые в TFilterComboBox. В этом свойстве во время разработки можно открыть окно редактора фильтров. Свойство FileList связывает компонент TFilterComboBox С TFileListBox.

Компоненты TDriveComboBox, TDirectoryListBox, TFilterComboBox и TFileListBox предоставляют во время выполнения доступ к информации о дисках, каталогах, фильтрах файлов и именах файлов. Эти компоненты обычно используются одновременно, предоставляя пользователю возможность выбрать нужный ему файл.

Компонент TFileListBox выводит список файлов в указанном каталоге. Его свойства Drive и Directory содержат диск и каталог, в которых находятся выводимые файлы. Свойство FileName содержит путь и имя выделенного в данный момент файла. Свойство FileEdit связывает объект типа TFileListBox С полем, в котором МОЖНО редактировать имя выделенного файла.

Для получения простейшего обозревателя файлов достаточно разместить в форме эти компоненты и установить необходимые связи. Интерфейс обозревателя файлов может быть таким, как показано на рис. 7,22.

Для создания многих приложений часто бывает достаточно простых компонентов, таких как поля ввода или кнопки. Тем не менее в Delphi представлено довольно много компонентов. Они позволяют существенно уменьшить объем исходного кода, необходимого для выполнения общих задач. Мощь и красота Delphi во многом обусловлена (и в этом вы уже смогли убедиться) легкостью создания сложных пользовательских интерфейсов путем простого переноса элементов управления с палитры компонентов в форму.

Изучение основных приёмов работы с каталогами и файлами в среде Borland Delphi.

2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

При организации многих приложений требуется работа с файлами и каталогами (папками). В модулях System и SysUtils находятся многочисленные процедуры, функции, типы и константы, предназначенные для работы с файловой системой.

Модуль System реализует средства ввода/вывода, обработки строк, операций с числами и динамической памятью и ряд других.

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

Для работы с файловой системой предназначены четыре специальных компонента (FileListBox, DirectoryListBox, DriveComboBox, FilterComboBox), расположенные на вкладке Win3.1 Палитры компонентов (рис. 1).

С помощью этих компонентов можно программировать операции, связанные с навигацией по файловой системе. Обычно они используются совместно, но при необходимости их можно применять по отдельности. На рис. 2 показаны связи между вышеперечисленными компонентами, а также Label и Edit, при их совместном использовании.


Рис. 1. Компоненты для работы с файлами и каталогами


Рис. 2. Связи между компонентами для работы с файлами и каталогами

Компонент DriveComboBox используется для выбора дисковода. Он представляет собой комбинированный список, содержащий все установленные в системе дисковые накопители. Выбранное устройство отображается в поле компонента, а соответствующая выбранному дисководу буква содержится в свойстве Drive. Аналогичное свойство имеется у компонентов DirectoryListBox и FileListBox.

Компонент DirectoryListBox служит для просмотра и перемещения по дереву каталогов. Он представляет собой прямоугольную область, в которой отображается дерево каталогов с выбранным текущим каталогом.

Свойство Directory содержит строку, указывающую текущий каталог.

Для отображения текущего каталога с компонентом DirectoryListBox может быть связана надпись Label, в которой автоматически отображает каталог. При этом на длину накладывается ограничение – не более 24 символов. Если название текущего каталога имеет длину больше, чем 24 символа, то часть названий каталогов заменяется многоточием.

Компонент FileListBox предназначен для просмотра списка файлов заданного каталога и выбора имени файла. Он представляет собой прямоугольную область, в которой отображается список файлов заданного каталога с возможностью визуального выбора файлов.

Просматриваемый каталог задаётся свойством Directory.

Для автоматического отображения выбранного в списке файла можно использовать компонент Edit, который должен быть связан с компонентом FileListBox. Первоначально, когда выбранных файлов нет, в поле Edit отображается выбранная маска, например, *. *.

При выборе пользователем файла в свойство FileName заносится полное имя выбранного файла. Это свойство доступно для чтения и записи, поэтому можно программно выбрать требуемый файл.

Управлять отображением файлов в списке можно с помощью свойств FileType и Mask. Свойство FileType указывает атрибуты файлов, содержащихся в списке, и принимает комбинации следующих значений:

Свойство Mask содержит маску для файлов списка. По умолчанию используется маска *.*, и в списке отображаются все файлы. При необходимости для маски можно задать другое значение.

Файлы в списке могут выводиться со значками или без них, наличие или отсутствие значка задаётся свойством ShowGlyphs.

Компонент FilterComboBox осуществляет выбор маски для списка файлов. Этот компонент представляет собой комбинированный список, который содержит фильтры. Фильтр состоит из текстового описания и маски. Доступ к фильтру осуществляется, через свойство Filter.

При совместном использовании компонентов FilterComboBox и FileListBox для организации связи между ними используется свойство FileList. После установки связи между этими компонентами в случае смены в компоненте FilterComboBox фильтра, а вместе с ним и маски, список файлов в компоненте FileListBox автоматически обновляется с учётом новой маски.




Работу с файлами соответствующих форматов поддерживают также такие компоненты как Memo, ListBox, Picture и Clipboard.

Работа с файлами. При работе с текстовыми файлами можно использовать объект типа TStrings, который имеет ряд методов, например:

3. ОБЪЕКТЫ ИССЛЕДОВАНИЯ, ОБОРУДОВАНИЕ, МАТЕРИАЛЫ И НАГЛЯДНЫЕ ПОСОБИЯ

3.1. IBM – совместимый компьютер.

3.2. Установленная операционная система Windows.

3.3. Установленное приложение Borland Delphi.

3.4. Справочная система приложения Borland Delphi.

4. ЗАДАНИЕ НА РАБОТУ

4.1. Изучение теоретические положения работы по программированию в среде Borland Delphi.

4.2. Выполнение индивидуального задания преподавателя по программированию в пределах вопросов, рассмотренных в данной лабораторной работе.

5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

5.1. Ознакомиться с теоретическими положениями данной лабораторной работы.

5.2. Выполнить индивидуальное задание преподавателя по программированию.

1. Запустите Delphi. Создайте новый проект.

2. Назовите форму MainForm с заголовком Главная. Для формы задайте:

· минимальный размер – 200х200;

· максимальный размер – 900х900.

3. Cохраните проект в папку D:\Users\. \Lab9\. .

4. На форме Главная создайте:

· панель высотой 50, сделайте, чтобы она выравнивалась по верхнему краю, измените её цвет;

· разделитель высотой 10, сделайте, чтобы он выравнивался по верхнему краю;

· панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю, измените её цвет;

· разделитель высотой 10, сделайте, чтобы он выравнивался по нижнему краю;

· многострочный редактор, назовите его MMemo, сделайте, чтобы он занимал всю оставшуюся фору;

· главное меню с пунктами Файл, О программеи Выход;

· в меню Файл пункты СохранитьиЗагрузить;

· на первой панели надпись Информация, измените размер шрифта;

· на второй панели кнопку с заголовком Очистить. Назовите её clBut. Сделайте, что бы по её нажатию удалялось содержимое многострочного редактора;

5. Сделайте так, чтобы при выборе меню Выход приложение закрывалось.

6. Создайте вторую форму:

· назовите SaveForm с заголовком Сохранение файла;

· сделайте форму размером 400х600.

7. На форме Сохранение файла создайте:

· панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю;

· разделитель высотой 10, сделайте, чтобы он выравнивался по нижнему краю;

· вторую панель, сделайте, чтобы она занимала всю оставшуюся фору.

8. На форме Сохранение файла на второй панели создайте:

· надпись Устройство, рядом с ней компонент выбора дисковода;

· надпись Путь, рядом с ней компонент для просмотра и перемещению по дереву каталога, высотой 120;

· надпись, свяжите её с компонентом для просмотра и перемещению по дереву каталога. Под ней компонент для просмотра списка файлов заданного каталога и выбора имени файла, высотой 150. Сделайте, чтобы файлы выводился со значками;

· надпись Тип файла, рядом с ней компонент для выбора маски для списка файлов. В нём создайте фильтр для выбора текстовых файлов (с расширением txt);

· надпись Имя файла, рядом с ней однострочный редактор, назовите его FNEdit. Сделайте, что бы в нём отображалось имя выбранного файла;

· организуйте связи между компонентами.

9. Сделаем, чтобы изначально в устройствах был выбран папка Users на диске D. Для этого в процедуру OnShow для формы введите код:

10. На форме Сохранение файла на второй панели создайте кнопки Сохранить и Отмена.

11. Запрограммируем кнопкуСохранить,что бы при нажатии на неё данные из редактор на форме Главная сохранялись в указный файл. Для этого в процедуру обработки для кнопки введите код:

12. При нажатии кнопки Отмена окно должно закрываться без каких-либо изменений.

13. Создайте третью форму:

· назовите LoadForm с заголовком Загрузка файла;

· сделайте форму размером 400х600.

14. По аналогии с формой Сохранение файласоздайте формуЗагрузка файла, только вместо кнопки Сохранить создайте кнопкуЗагрузить, при нажатии которой выбранный файл загружался в редактор на форме Главная.

15. Создайте четвёртую форму:

· назовите форму AboutForm с заголовком О программе;

· сделайте форму размером 400х300;

· измените цвет формы.

16. На форме О программе создайте:

· фигуру (компонент Shape) в виде прямоугольника с закругленными краями, размером 320х220, измените тип линии и её цвет;

· поверх фигуры надпись, содержащую своё Ф.И.О., группу, № лабораторной работы, год. Измените размер, цвет и шрифт надписи;

· кнопку Ok. Запрограммируйте, чтобы при нажатии кнопки форма закрывалась.

17. Запрограммируйте соответствующие пункты главного меню, чтобы при их выборе открывались соответствующие формы.

18. Сохраните и запустите проект на выполнение.

19. Закройте Delphi.

5.3. Оформить отчет по работе.

5.4. Защитить лабораторную работу путем ответа на вопросы преподавателя.

6. СОДЕРЖАНИЕ ОТЧЕТА

6.1. Описание цели работы.

6.2. Основные теоретические положения работы

6.3. Содержание индивидуального задания преподавателя по программированию.

6.4. Описание методики выполнения индивидуального задания.

7. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

7.1. Delphi 7 : [наиболее полное руководство] / А. Д. Хомоненко [и др.];под общ.ред.А.Д.Хомоненко .— СПб. : БХВ - Петербург, 2007 .— 1216с. : ил. (7 экз.)

7.2. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П.Марков .— СПб.: БХВ -Петербург, 2004 .— 784c. : ил. (1 экз.)

7.3. Осипов Д. Delphi. Профессиональное программирование. - СПб.: Символ-Плюс, 2006. -1056 с., ил.

Читайте также: