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

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

TTree [D7, XP]


Страницы:   1 2

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 - получить предыдущую

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


Страницы:   1 2

Наверх

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