Осуществляю поиск узла дерева VirtualTreeView следующей процедурой:
| Код | // поиск узла дерева function TfrmTrainingList.FindNode(ANode: PVirtualNode; const APattern: integer): PVirtualNode; var NextNode: PVirtualNode; DataNode: PTrainingNode; begin Result := nil; NextNode := ANode.FirstChild; if Assigned(NextNode) then begin repeat DataNode := vt.GetNodeData(NextNode); if Assigned(DataNode) then if DataNode^.training_id = APattern then begin Result := NextNode; exit; end; // Ищем в дочерних ветках Result := FindNode(NextNode, APattern); if Result = nil then NextNode := NextNode.NextSibling else begin NextNode := nil; break; end; until NextNode = nil; end; end;
|
Все хорошо работает, если дерево без дочерних элементов, т.е. дерево обычный список. Если же в дереве есть дочерние элементы, а в них есть еще дочерние элементы, то нужный элемент не находится. Возвращается nil.
Помогите исправить ошибку.
|