Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TreeView : Copy TreeNodes [D6, Win2k]


Сатир ©   (2002-04-23 14:53:00) 

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


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

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


Song   (2002-04-24 09:06:00) [2]

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


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

>>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-23 21:11:00) [4]

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

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

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



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

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


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

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


Song   (2002-04-23 16:12:00) [7]

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


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

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


Song   (2002-04-23 15:09:00) [9]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо