![]() |
|
|
![]()
|
|
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
Всем привет. Делаю диплом и мне просто необходимо реализовать там следующие... Например я при помощи TDirectoryEdit выбираю каталог и получаю его имя. Потом мне нужно в TreeView отобразить все папки и подкаталоги, примерно таким образом:
Dir1 -dir1.1 -dir1.2 -dir1.3 --dir1.3.1 --dir1.3.2 --dir1.3.3 Dir2 -dir2.1 -dir2.2 -dir2.3 --dir2.3.1 --dir2.3.2 --dir2.3.3 где dir1.3.2 имеет следующий путь C:\Dir1\dir1.3\dir1.3.2 Т.е. основные директории лежат в основе дерева, подкаталоги второй уровень(т.е. узел) и т.д. Функция для поиска папок и подкаталогов(причем всех) следующая:
но как все эти папки и подкаталоги потом раскидать по TreeView ума не приложу. Подскажите как быть? Может например искать подкаталоги и кидать их в TreeView, а потом искать в них подкаталоги, при этом создавая узлы. Кто знает помогите, оч нужно... |
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
хей багуп
|
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Можно просто через FindFirst/FindNext искать все каталоги/файлы и в зависимости от этого создавать нужный узел. Оформить это в виде функции. И если это каталог, то вызывать эту функцию снова, рекурсивно, с новым значением маски.
|
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
а дай функцию для поиска подкаталогов первого уровня...
|
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
Domain, найди книгу Архангельского "C++ Builder
и Механизмы Windows" - там он писал приммеры файловых менеджеров и обсуждались аспекты посторения деревьев по файловой системме |
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
ну нормально. спс.
|
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
а как функцию переписать чтобы она мне подкаталоги только первого уровня показывала, а не всех?
|
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
Если идти по итнуиции, то сделать bool параметр для указания того,
что фун-ка работает рекурсивно или нет. и если нужен только первый уровень, то передаём false. А вообще, Domain, какую функцию? Где код? |
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
вот функция для поиска всех подкаталогов всех уровней
|
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
SenkraD братушечка выручай ... еее ..
|
|||
|
||||
| DCamer |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Domain, этот "Файловый менеджер" будет работать с папками на компьютере?
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
Domain, builder'а под рукой нет - так, что получи почти кросплатформенный вариант
|
|||
|
||||
| DCamer |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Domain, чтобы отобразить путь в лейбле нужно на форму кинуть лейбл и в свойствах TDirectoryListBox указать имя лейбла в DirLabel
Это сообщение отредактировал(а) DCamer - 22.4.2010, 12:51 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
При создании TTreeView заполняешь ему один уровень именами каталогов. В каждом каталоге делаешь 1 вложенный item c текстом типа '<Loading...>'. На раскрытие item'ов вешаешь событие, которое сканирует соотвествующий подкаталог (на 1 уровень, без рекурсий) и по окончании заменяет узел '<Loading...>' на построенный список. Построенный уровень так же должен содержать '<Loading...>' для всех вложенных каталогов
|
|||
|
||||
| Domain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 11.3.2010 Репутация: нет Всего: нет |
ну сам принцип я давно догнал, тока что не мог убрать рекурсию из той функции, которую я написал уже дважды тут. просто она нормально работает, только так не понял где там рекурсию убрать. xvr может ты мне подскажешь? в том что SenkraD написал я еще не разбирался. имхо у меня еще пока не такой уровень, чтобы потом этот код грамотно в bcb поместить. может тогда скажете в каком месте я получаю путь к каталогу, чтобы потом его например в StringList добавить?
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |