Delphi. DBTreeView. Самый эффективный алгоритм удаления узлов из дерева, связанного с базой данных

-пусть есть TreeView, соединенный с базой, скажем MySQL

-пусть мы хотим удалить выделенный узел TreeView из базы данных и из дерева

Алгоритм (пока что №1 в моем рейтинге)

-собрать ID всех детей (рекурсивно), хранящиеся по указателю каждого узла дерева SomeNode.Data

-удалить все записи с этими ID из БД

-удалить указатели всех детей в TreeView обычным обходом всех детей через repeat until

-удалить всех детей из дерева

-удалить указатель удаляемого узла

-удалить сам узел

Вот пример из одной из программ

Алгоритм (из книги Осипова про базы данных)

Удаляет только то, что видно в дереве. Обходит дерево своеобразным способом и удаляет узлы. Это недостаток на мой взгляд. Скажем, у меня есть режим – показывать только папки, в которых содержатся файлы, но которые не отображаются. Что делать в этом случае – непонятно? Для решения этой проблемы я разработал алгоритм, который указан первым в данном посте.

Исходники (юнит полностью)

 

 

This entry was posted in Delphi, Алгоритмы. Bookmark the permalink.