Форум: "Основная";
Текущий архив: 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