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

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

Пробег по элементам TreeView [D7, WinXP]


LedWorm ©   (2004-12-23 22:09:00) 

помогите пожалуйста решить проблему.

Имеется TreeView с большим числом элементов.
Нужно к каждому элементу добавить символ в названии.

Как можно пробежаться по всему дереву?
Уровень вложенности может быть очень большим.

Заранее благодарен.


LedWorm   (2004-12-24 20:48:00) [1]

Спасибо Джо. Все работает. Это то что было нужно.


Просто Джо   (2004-12-24 02:49:00) [2]

Э... ну, что-нибудь такое... рекурсивное...



type
 // прототип callback-функции
 TNodeCallback = procedure (ANode: TTreeNode);

// вызывает процедуру, указанную в CallBaclProc для каждого узла
// TTreeView; работает рекурсивно
procedureOnEachNode (ARoot: TTreeNode; CallBackProc: TNodeCallback);
var
 I: Integer;
 ANode: TTreeNode;
begin
 CallBackProc (ARoot);
 // перебираем рекурсивно всех детей
 for I := 0 to ARoot.Count-1 do
   OnEachNode (ARoot.Item[I],CallBackProc);

 // запускаем рекурсию для следующего узла
 // того же уровня, что и текущий
 if ARoot.getNextSibling <> nil then
   OnEachNode(ARoot.getNextSibling,CallBackProc);
end;

// это наша функция, которая будет что-нибудь делать с
// передаваемыми в нее узлами
procedureMyCallBack (ANode: TTreeNode);
begin
 ANode.Text :=  ANode.Text + ' :-)' // ну вот, что-то сделали ;)
end;

procedureTForm1.Button1Click(Sender: TObject);
begin
 // запускаем рекурсию с первого узла дерева,
 // going down recursively... God save the stack!
 OnEachNode(TreeView1.Items.GetFirstNode, MyCallBack);
end;



Ну или в таком духе...


AlterEgo of WondeRu   (2004-12-23 23:00:00) [3]

"рекурсия"! искать в яндексе!


Наверх

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