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

Вниз

Пробег по элементам TreeView   Найти похожие ветки 

 
LedWorm   (2004-12-23 22:09) [0]

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

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

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

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


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

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


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

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



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

// вызывает процедуру, указанную в CallBaclProc для каждого узла
// TTreeView; работает рекурсивно
procedure OnEachNode (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;

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

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



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


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

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



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

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

Наверх




Память: 0.47 MB
Время: 0.122 c
3-1102788522
able
2004-12-11 21:08
2005.01.16
Окно подключения к базе..


14-1103907381
Aldor_
2004-12-24 19:56
2005.01.16
WinXP - когда вставляю флэшку, винда виснет


10-1080641836
Demiurg
2004-03-30 14:17
2005.01.16
Excel таблицы на форме.


6-1098539346
Пронч
2004-10-23 17:49
2005.01.16
Прокси.


1-1104440915
Kolan
2004-12-31 00:08
2005.01.16
Как проверить истек ли TimeOut при работе с портом