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), значить, у цій "гілці" далі робити нічого.