Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

Пробег по элементам 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.035 c
3-1103092335
dolmat
2004-12-15 09:32
2005.01.16
SQL по двум базам


3-1102764234
Игорь (гость)
2004-12-11 14:23
2005.01.16
Не сохраняются изменения в БД


3-1102839075
Dell3r
2004-12-12 11:11
2005.01.16
TQuickRep


1-1104044743
ReNEG@T 344
2004-12-26 10:05
2005.01.16
Delphi 8


1-1104369181
TButton
2004-12-30 04:13
2005.01.16
onHelp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский