DELPHI. DBTreeView своими руками. Update. Динамическая подгрузка веточек

Для ускорения DBTreeView в данном алгоритме реализована так называемая динамическая подгрузка веточек. Суть в том, что в сначала загружаются все узлы нулевого уровня. Потом, при каждом Expanding узла, если у него есть потомки – дозагружаются его потомки первого уровня и так далее. В результате грузятся только те узлы, которые нужны, а это экономит ресурсы.

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

Основная рабочая процедура ExpandingUpdate из модуля uUpdateTree.

В остальном – ничего сложного – работа с базой и деревом. Запросы цепляются из модуля SQLQueries.

Первоначальное раскрытие дерева происходит следующим образом

Также нужно в onEXpanding прописать следующее

Далее представлен код модуля uUpdateTree

 

This entry was posted in Delphi, Компонентостроение. Bookmark the permalink.