TTreeView - список нащадків вузла

Добридень. Допоможіть плз, як дізнатися, наприклад, абсолютні індекси всіх нащадків одного кореневого вузла дерева. Як швидко перебрати всі вузли всього дерева я знаю, а ось окремого вузла важко. Дякую.

Наприклад, перебираю всі вузли дерева: . Var CurItem: TTreeNode; List: TstringList; begin List:=TStringList.Create; try CurItem:= TTreeView.Selected; // або TTreeView.Items.GetFirstNode; якщо //починаю перебір із першого вузла while CurItem <> nil do begin Lis.Add(IntToStr(CurItem.AbsoluteIndex)); CurItem:= CurItem.GetNext; end; finally List.Free; end; end; Але мені треба дізнатися всі дочірні вузли тільки обраного (Selected)

Lis.Add(IntToStr(CurItem.AbsoluteIndex));друкарка, перепрошую. пишу прямий тутList.Add, звичайно.

млин, ще друкарська помилка неTTreeView.Selectedа TreeView.Selected Малюють, як мені дійти від одного кореневого вузла до іншого з перевіркою всіх дочірніх, при цьому ще не потрапити в AV c CurItem=nil

Добре. якби я знав як знайтиостанній кореневий вузол у дереві, то можна було б здійснювати перевірку: якщо останній вузол, то поки що TTreeNode<> nil.

> Wood (16.01.07 17:11) [2] > Але мені треба дізнатися про всі дочірні вузли тільки обраного (Selected)

А якщо потрібно знати не тільки "синів" обраного вузла, а й "онуків", "правнуків" тощо, повторювати те саме для кожного знайденого дочірнього вузла. Рекурсія, тессь.

> Wood (17.01.07 2:59) [7]

Якщо у дочірнього вузла синів немає (GetFirstChild для нього повертає nil), значить, у цій "гілці" далі робити нічого.