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

Вниз

TTree   Найти похожие ветки 

 
RX   (2005-12-12 00:05) [0]

Как перейти к след ветке
Есть дерево вида
            E-------1
                  ----2
                  ----3
Допусти в данный момент у меня Node=1 как ко 2й ветке перейти
и переход циклический? а то если у меня в данный момент Node=3


 
Digitman ©   (2005-12-12 13:38) [1]


> Допусти в данный момент у меня Node=1


> у меня в данный момент Node=3


галиматья


 
evvcom ©   (2005-12-12 15:29) [2]


> Digitman ©   (12.12.05 13:38) [1]

Я даже до конца не дочитал, в ступор вошел. :)


 
Morgoth_   (2005-12-12 15:34) [3]

по пооду как перейти к след. ветке
GetNextSibling - получить следующую ветку
GetPrevSibling - получить предыдущую

всё остальное сумбурно как-то


 
umbra ©   (2005-12-12 15:38) [4]

node2 := treeview.items[treeview.selected].getnextsibling;


 
RX   (2005-12-12 15:38) [5]

в каждом узле хоть скоко подузлов
всё динамически заполняется

вот например появился Узел с тремя подузлами
надо найти определённый подузел этого Узла
чтобы в найденный подузел записать ещё подузлы


 
umbra ©   (2005-12-12 15:40) [6]

TTreeNode + F1. раздел methods


 
Morgoth_   (2005-12-12 15:45) [7]

а как вообще ты собираешься определять в какой узел надо добавлять?


 
Digitman ©   (2005-12-12 15:48) [8]


> RX   (12.12.05 15:38) [5]


ты о каком конкретно классе речь ведешь, клоун ?)


 
RX   (2005-12-12 15:50) [9]

У меня тут целая книженция. Примеров нет.

строка node2 := treeview.items[treeview.selected].getnextsibling;
ошибку выдаёт Инкомпатбл типс: интеджр и титринод


 
RX   (2005-12-12 15:53) [10]

класс TTreeView
а как вообще ты собираешься определять в какой узел надо добавлять?
if  (Node.HasChildren=false) and (Node.Text="E")
и там допустим Node:=TreeView.Items.AddChild(Node,"E");


 
Digitman ©   (2005-12-12 15:54) [11]


> RX   (12.12.05 15:50) [9]
> У меня тут целая книженция


молодца.

судя по твоим постам, у всех есть только одна книженция - в точности та же, что и у тебя... и других "книженций" и инф-ции в мире не существует.

и все ОБЯЗАНЫ знать, что речь ты ведешь именно о классе TTreeView.

так ?

node2 д.б. объявлен как TTreeNode


 
Morgoth_   (2005-12-12 15:54) [12]

node2 := treeview.selected.getnextsibling


 
RX   (2005-12-12 15:56) [13]

мне надо чтобы если условию не подчиняется то перейти к след. подузлу данного узла или вообще перейти на уровень выше


 
Morgoth_   (2005-12-12 15:58) [14]

if  (Node.HasChildren=false) and (Node.Text="E")
и там допустим Node:=TreeView.Items.AddChild(Node,"E");


пробегаешь по всем элементам дерева и условие на каждом применяешь, только элементу надо присвоить уникальный id в Data, потому что названия могут быть одинаковыми


 
RX   (2005-12-12 15:59) [15]

Node у меня и так TTreeNOde

node := treeview.selected.getnextsibling;
вылетает с ошибкой (дизассемблерной)


 
Morgoth_   (2005-12-12 15:59) [16]

мне надо чтобы если условию не подчиняется то перейти к след. подузлу данного узла или вообще перейти на уровень выше

еще одно слово в помощь - рекурсия


 
RX   (2005-12-12 16:06) [17]

а на уровень выше как вылазить?


 
RX   (2005-12-12 16:17) [18]

блин интересно как это по всем пробежать у меня их всё время разное число и структура

вот простой примерчик (Node у меня как указатель)
Node:=TreeView.Items.Add(Nil,"E");  //указатель на корне
TreeView.Items.AddChild(Node,"E");
Node:=TreeView.Items.AddChild(Node,";");//указатель на узле причём на втором


как заставить этот указатель Node быть на первом узле?


 
Morgoth_   (2005-12-12 16:52) [19]

блин интересно как это по всем пробежать у меня их всё время разное число и структура

создай процедуру, которая вызывает сама себя:

метка1
в эту процедуру передаешь TTreeNode, смотришь есть ли у него дочерние элементы, если есть, то пробегаешь по каждому из них и вызываешь эту же процедуру в самой себе, а дальше goto метка1

попутно применяй свои условия :)


 
RX   (2005-12-12 17:02) [20]

тогда конкретнее вопрос как выполнить такое действие?

"Выбрать КРАЙНЮЮ с начала ,содержащую тескт <<E>>, ветку без дочерних"


 
RX   (2005-12-12 17:05) [21]

т.е. если структура такая
  E------1
      ----E
      ----3
      ----E

нужен не только котрый удовлетворяет условию
if  (Node.HasChildren=false) and (Node.Text="E")
а ещё и КРАЙНЮЮ!!!!
как эту определить КрАЙность


 
Morgoth_   (2005-12-12 17:13) [22]

Для этого лучше искать элемент не по имени, а по уникальному идентефикатору, по принципу, который описан выше.
Тяжелая наверное все таки книженция.



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

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

Наверх




Память: 0.51 MB
Время: 0.065 c
3-1131431309
makvell
2005-11-08 09:28
2005.12.25
Псевдонимы...


2-1134319884
apxi
2005-12-11 19:51
2005.12.25
Как связать 2 таблицы в Access с помощью запроса?


2-1134226741
De1uxe
2005-12-10 17:59
2005.12.25
Создание каталога?


11-1112295083
Boguslaw Brandys
2005-03-31 22:51
2005.12.25
PIcon Draw problem in tray icon KOL program


5-1118821158
Anatoly
2005-06-15 11:39
2005.12.25
Форма c компонентом при ткрытии в design дает "Error creating"