![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TTree [D7, XP]
RX © (2005-12-12 00:05:00)Как перейти к след ветке
Есть дерево вида
E-------1
----2
----3
Допусти в данный момент у меня Node=1 как ко 2й ветке перейти
и переход циклический? а то если у меня в данный момент Node=3
Morgoth_ (2005-12-12 17:13:00) [1]Для этого лучше искать элемент не по имени, а по уникальному идентефикатору, по принципу, который описан выше.
Тяжелая наверное все таки книженция.
RX (2005-12-12 17:05:00) [2]т.е. если структура такая
E------1
----E
----3
----E
нужен не только котрый удовлетворяет условию
if (Node.HasChildren=false) and (Node.Text='E')
а ещё и КРАЙНЮЮ!!!!
как эту определить КрАЙность
RX (2005-12-12 17:02:00) [3]тогда конкретнее вопрос как выполнить такое действие?
"Выбрать КРАЙНЮЮ с начала ,содержащую тескт <<E>>, ветку без дочерних"
Morgoth_ (2005-12-12 16:52:00) [4]блин интересно как это по всем пробежать у меня их всё время разное число и структура
создай процедуру, которая вызывает сама себя:
метка1
в эту процедуру передаешь TTreeNode, смотришь есть ли у него дочерние элементы, если есть, то пробегаешь по каждому из них и вызываешь эту же процедуру в самой себе, а дальше goto метка1
попутно применяй свои условия :)
RX (2005-12-12 16:17:00) [5]блин интересно как это по всем пробежать у меня их всё время разное число и структура
вот простой примерчик (Node у меня как указатель)
Node:=TreeView.Items.Add(Nil,'E'); //указатель на корне
TreeView.Items.AddChild(Node,'E');
Node:=TreeView.Items.AddChild(Node,';');//указатель на узле причём на втором
как заставить этот указатель Node быть на первом узле?
RX (2005-12-12 16:06:00) [6]а на уровень выше как вылазить?
Morgoth_ (2005-12-12 15:59:00) [7]мне надо чтобы если условию не подчиняется то перейти к след. подузлу данного узла или вообще перейти на уровень выше
еще одно слово в помощь - рекурсия
RX (2005-12-12 15:59:00) [8]Node у меня и так TTreeNOde
node := treeview.selected.getnextsibling;
вылетает с ошибкой (дизассемблерной)
Morgoth_ (2005-12-12 15:58:00) [9]if (Node.HasChildren=false) and (Node.Text='E')
и там допустим Node:=TreeView.Items.AddChild(Node,'E');
пробегаешь по всем элементам дерева и условие на каждом применяешь, только элементу надо присвоить уникальныйid в Data, потому что названия могут быть одинаковыми
RX (2005-12-12 15:56:00) [10]мне надо чтобы если условию не подчиняется то перейти к след. подузлу данного узла или вообще перейти на уровень выше
Morgoth_ (2005-12-12 15:54:00) [11]node2 := treeview.selected.getnextsibling
Digitman (2005-12-12 15:54:00) [12]
> RX (12.12.05 15:50) [9]
> У меня тут целая книженция
молодца.
судя по твоим постам, у всех есть только одна книженция - в точности та же, что и у тебя... и других "книженций" и инф-ции в мире не существует.
и все ОБЯЗАНЫ знать, что речь ты ведешь именно о классе TTreeView.
так ?
node2 д.б. объявлен как TTreeNode
RX (2005-12-12 15:53:00) [13]класс TTreeView
а как вообще ты собираешься определять в какой узел надо добавлять?
if (Node.HasChildren=false) and (Node.Text='E')
и там допустим Node:=TreeView.Items.AddChild(Node,'E');
RX (2005-12-12 15:50:00) [14]У меня тут целая книженция. Примеров нет.
строка node2 := treeview.items[treeview.selected].getnextsibling;
ошибку выдаёт Инкомпатбл типс: интеджр и титринод
Digitman (2005-12-12 15:48:00) [15]
> RX (12.12.05 15:38) [5]
ты о каком конкретно классе речь ведешь, клоун ?)
Morgoth_ (2005-12-12 15:45:00) [16]а как вообще ты собираешься определять в какой узел надо добавлять?
umbra (2005-12-12 15:40:00) [17]TTreeNode + F1. раздел methods
RX (2005-12-12 15:38:00) [18]в каждом узле хоть скоко подузлов
всё динамически заполняется
вот например появился Узел с тремя подузлами
надо найти определённый подузел этого Узла
чтобы в найденный подузел записать ещё подузлы
umbra (2005-12-12 15:38:00) [19]
node2 := treeview.items[treeview.selected].getnextsibling;
Morgoth_ (2005-12-12 15:34:00) [20]по пооду как перейти к след. ветке
GetNextSibling - получить следующую ветку
GetPrevSibling - получить предыдущую
всё остальное сумбурно как-то