Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > TreeView составление пути к отмеченному итему |
Автор: Antony41 22.4.2009, 16:53 |
Использую RZCheckTree компонент, сделал подобную копию ShellTreeView, только с чекбоксами. Пользователь должен отметить какой нибудь путь по выбору например - C:\ |_- Downloads | |_Musik (поставил галочку тут) |_ |_Progi |_- Games |_Quake(и тут) +D:\ +E:\ Как можно раскопать полный путь к отмеченному итемам соответственно через цикл от 0 to Items.count-1 PS Заколебался рисовать ![]() |
Автор: Beltar 22.4.2009, 17:50 |
Это что за компонент такой у которого даже Parent у узлов нету?? |
Автор: Antony41 22.4.2009, 18:19 |
Парэнт у узлов есть. как можно реализовать? |
Автор: Beltar 22.4.2009, 19:00 |
По родителям подниматься наверх, начиная с выбранных. Если хочешь начать сверху, то начинаешь с первого, заносишь его путь и сам узел в стек, берешь его первый дочерный, добавляешь его в стек и так пока не дойдешь до конечного. Выводишь получившийся путь, в стек не ложишь, смотришь следующий узел, если он есть, если он не конечный, то опять в стек, если ветка кончилась, выталкиваешь ее и помещаешь в стек начало соседней ветки. |
Автор: Keeper89 22.4.2009, 19:29 | ||
Короче говоря, вам надо организовать какой-то такой цикл (конкретных методов и св-в у вашего компонента не знаю):
|
Автор: Antony41 23.4.2009, 11:01 | ||
Спасибо всё прекрасно, но вот еще кое что
Нужно составить запрос для Поиска файлов. (указать ему путь для поиска) если директория на уровень выше отмечена, то соответственно все остальные дирректории, входящие должны включаться сами уже поиском. - С: |_- (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, 18:04 |
поддиректории сами отмечаются если выбираешь директорию где они находятся. Например в папке А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 23.4.2009, 20:14 |
Ну пробегись в цикле по дочерним узлам: если все дочерние узлы для конкретной папки отмечены, не вноси их в Резалт. |
Автор: Antony41 24.4.2009, 00:33 |
Ну я так и понял, что нужно проверять дочерние узлы, на состояние отмечен он или нет. Пробовал не получалось, завтра еще помучаюсь... |
Автор: Antony41 24.4.2009, 15:52 | ||
Очень всем благодарен всё получилось вот что как должно быть
|
Автор: Keeper89 25.4.2009, 19:48 |
Поздравляю! Пометь вопрос решенным ;) |