Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.09;
Скачать: CL | DM;

Вниз

TreeView : Copy TreeNodes   Найти похожие ветки 

 
Сатир   (2002-04-23 14:53) [0]

Народ! Помогите советом.
У меня такая ситуация: вытягиваю рекурсивно дерево из ксмл-файла. В дереве есть группы(group) и айтемы(item), корень называется navigator.
Navigator содержит только группы, а группы могут содержать как айтемы, так и вложенные группы с айтемами. Если группа содержит вложенные группы, то эту группу нужно скопировать в отдельное дерево, причем нужно скопировать только дочерние группы без их предка. Как это сделать на этапе формирования первичного дерева?


 
Song ©   (2002-04-23 15:09) [1]

Node - текущая ветвь
IF Node.HasChildren and Node.GetFirstChild.HasChildren then ShowMessage("Данная ветвь "+Node.Text+" имеет вложенную группу.");


 
Сатир   (2002-04-23 15:43) [2]

>>Song, это условие уже есть. Но дело в том, что мне нужно не информировать пользователя или себя, а активизировать создание паралельного дерева. То есть, когда попадается вложенная группа, добавлять в другое дерево. Звучит в принципе просто, но вот, что-то не выходит...


 
Song ©   (2002-04-23 16:12) [3]

Т.е. другим словами, Вы не знаете как скопировать весь с подитемами Node.GetFirstChild в другое дерево?


 
Сатир   (2002-04-23 18:18) [4]

>> Song - не знаю. Но дело в том что нужно не просто скопировать а создавать в параллельном режиме и с той же архитектурой. То есть, растет себе какое-то деревцо. В нем сначала выростают только ветки group, а дальше эти ветки могут сразу дать листья item, на которых закончится ветка, или породить группы других веток, и вот, как только определяется начало процесса рождения новых веток (от ветки, а не от корня), вот тогда и включить процесс клонирования этой ветки. Если б я имел уже готовое дерево, тогда гораздо проще. Но дело в том что я же не знаю какая ветвь захочет пустить листочки, а какая даст другие ветки...


 
Cobalt ©   (2002-04-23 19:08) [5]

То есть, проще говоря, у вас дерево может иметь только "одноуровневые ветви"?


 
Song ©   (2002-04-23 21:11) [6]

Я всё равно не понял Вашу задачу :(
Нарисуйте её хоть здесь вот так

....
Первая ветка
Подветка1
....

И напишите с какой подветки куда копировать.




 
Сатир   (2002-04-23 22:01) [7]

>>Song
navigator
|_group
| |_item
| |_item
|_group
| |_item
| |_group
| | |_item
| | |_item
| |_item
|_group
|_group
| |_item
| |_item
|_group
|_item
У навигатора есть три ветки. Две из них имеют вложения, поэтому мне нужно скопировать вторую ветку(без родителя) в одно дерево, а третью в другое дерево(поскольку они имеют вложения)
То есть из этого дерева я должен получить два дерева следующего вида:
Первое:

_item
|_group
| |_item
| |_item
|_ item

и второе:

_group
| |_item
| |_item
|_group
|_item
Подскажите, пожалуйста, как это сделать?


 
Song ©   (2002-04-24 09:06) [8]

Рассмотрим вот эту часть:
|_group
|_group
| |_item
| |_item
|_group
|_item
у верхнего group есть подитем group у которого тоже есть подветвь (item). Почему эта ветвь не относится к той классификации, ветви которой уходят в другое дерево?


 
Сатир   (2002-04-24 13:15) [9]

Ладно, всем спасибо. Уже разобрался сам:-)



Страницы: 1 вся ветка

Текущий архив: 2002.05.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-26128
Дмитрий Баранов
2002-04-24 17:51
2002.05.09
перкомпиляция VCL с отладочной информацией


1-26121
MegaVolt
2002-04-24 10:31
2002.05.09
---|Ветка была без названия|---


7-26279
Dorixe
2002-01-05 08:08
2002.05.09
Отключение мониторов


1-26077
MVova
2002-04-25 16:49
2002.05.09
Альтернатива SourceSafe


1-26076
SPeller
2002-04-26 12:00
2002.05.09
Лимит в INI файле