Как использовать представление виртуального дерева в динамически обновляемом дереве? - PullRequest
0 голосов
/ 25 сентября 2019

Я использую Delphi XE3 и Virtual TreeView.

Я хочу использовать Virtual TreeView для реализации дерева, при нажатии кнопки «Пуск» программа рекурсивно ищет все файлы и папки на диске, затемдобавьте их один за другим в дерево, как в Windows Explorer.

После тщательного прочтения «Виртуальной парадигмы» в справочном документе я знаю, что не могу использовать AddChild или InsertNode, поскольку они предназначены только для совместимости.цели.Нужно использовать OnInitNode и OnInitChildren для инициализации узлов.

Но действительно сложно использовать виртуальную парадигму в моем случае.В настоящее время я могу выяснить один алгоритм:

  1. Определить внутреннюю структуру данных, называемую TMyInternalNode, для хранения данных одного внутреннего узла дерева, а также отношения между внутренними узлами, такие какродитель, ребенок, брат и т. д.

  2. В событиях OnInitNode и OnInitChildren.Попробуйте найти местоположение узла, через его уровень и отношения между другими узлами.Затем найдите соответствующий внутренний узел для узла (который может быть немного сложным, иногда можно обойти все внутреннее дерево узлов, чтобы найти правильное. После нахождения правильного, инициализируйте узел данными внутреннего узла.

Этот алгоритм кажется сложным и отнимает много времени. Есть ли лучший способ реализовать такой случай?

...