![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Использую RZCheckTree компонент, сделал подобную копию ShellTreeView, только с чекбоксами.
Пользователь должен отметить какой нибудь путь по выбору например - C:\ |_- Downloads | |_Musik (поставил галочку тут) |_ |_Progi |_- Games |_Quake(и тут) +D:\ +E:\ Как можно раскопать полный путь к отмеченному итемам соответственно через цикл от 0 to Items.count-1 PS Заколебался рисовать ![]() Это сообщение отредактировал(а) Antony41 - 22.4.2009, 16:58 |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Это что за компонент такой у которого даже Parent у узлов нету??
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Парэнт у узлов есть. как можно реализовать?
|
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
По родителям подниматься наверх, начиная с выбранных. Если хочешь начать сверху, то начинаешь с первого, заносишь его путь и сам узел в стек, берешь его первый дочерный, добавляешь его в стек и так пока не дойдешь до конечного. Выводишь получившийся путь, в стек не ложишь, смотришь следующий узел, если он есть, если он не конечный, то опять в стек, если ветка кончилась, выталкиваешь ее и помещаешь в стек начало соседней ветки.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Короче говоря, вам надо организовать какой-то такой цикл (конкретных методов и св-в у вашего компонента не знаю):
Это сообщение отредактировал(а) Keeper89 - 22.4.2009, 19:34 |
|||
|
||||
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Спасибо всё прекрасно, но вот еще кое что
Нужно составить запрос для Поиска файлов. (указать ему путь для поиска) если директория на уровень выше отмечена, то соответственно все остальные дирректории, входящие должны включаться сами уже поиском. - С: |_- (v) Downloads (Если тут выделяю, то входящие папки, не должны включаться в результат) результат должен быть такой C:\Downloads\ | |_Musik | |_Archives | |_Video | |_- (>) Games |_(x)Quake |_(v)Quake2 (А тут такой C:\Games\Quake2\) |_(x)Quake3 + D: + E: В конце цикла после добавлений результатов в строку запроса для поиска (C:\Downloads\; C:\Games\Quake2\) Что то не получается у меня по парентам вычислить где какой должен выводится результат Это сообщение отредактировал(а) Antony41 - 23.4.2009, 11:05 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Здесь вы говорите, что должны включаться...
а здесь уже нет. Насколько я понял, нужно отмечать галочкой все поддиректории того узла, который отмечен, так или нет? |
|||
|
||||
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
поддиректории сами отмечаются если выбираешь директорию где они находятся.
Например в папке А1 находятся 3 поддиректории Если отмечена например С1 уже отмечена, и я нажму на А1, то автоматически отметятся все поддиректории B1, C1, D1. С:\A1\B1\ C:\A1\C1\ C:\A1\D1\ Как ты понял уже работает. Я использую цикл и записываю пути в FResult(смотри код выше) Если директория А1 отмечена (все поддиректории соответственно тоже отмечаются сами именно так как ты понял), а вот в FResult записывается вот так С:\A1\B1\;C:\A1\C1\;C:\A1\D1\, а надо просто С:\A1\ (если в этой директории все поддиректории отмечены) |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Ну пробегись в цикле по дочерним узлам: если все дочерние узлы для конкретной папки отмечены, не вноси их в Резалт.
Это сообщение отредактировал(а) Keeper89 - 23.4.2009, 20:18 |
|||
|
||||
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Ну я так и понял, что нужно проверять дочерние узлы, на состояние отмечен он или нет.
Пробовал не получалось, завтра еще помучаюсь... |
|||
|
||||
Antony41 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Очень всем благодарен всё получилось вот что как должно быть
Это сообщение отредактировал(а) Antony41 - 24.4.2009, 16:51 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Поздравляю! Пометь вопрос решенным ;)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |