Delphi.MySQL.Мои компоненты.TPSDBTreeView

Вот что у нас получится.  Дерево работает над базой MySQL. В примере 2 дерева, работающие над одной таблицей базы. 3-й ряд кнопок сам определяет какое дерево активно. Исходники прилагаю.

Типовая таблица для дерева. Это минимальный набор полей. Всё остальное можно добавлять по необходимости. При этом копирование-вставка записей будут происходить корректно.

Основные особенности

Динамическая загрузка веточек (на OnExpanding). Позволит более эффективно расходовать память.

В одной таблице могут быть несколько деревьев, отличающиеся по полю external_id. Скажем у нас есть вопросы разных тестов в группах. Тогда мы можем все вопросы всех тестов писать в одной таблице. А внешний ключ делать на тесты.

Вырезать копировать вставить работает для произвольного количества полей. Используется инструкция insert select базы mysql.

Можно вырезать копировать и вставлять из одного дерева в другое, при условии, что деревья находятся в одной таблице. В примере я это реализовал.

Выделение элементов происходит либо по нажатию на чекбоксы либо по нажатию на сам элемент.

Основной функционал

Настройка дерева перед запуском

Освобождение памяти при уничтожении

Пока не доделал этот момент, освобождение происходит в ручную

Компонент делал на основе панели. У панели нет OnDestroy. Пытался ловить сообщения, но пока не получилось корректно. Доделаю позже.

Что ещё не доделал?

Drag and Drop.

Упростить настройку дерева перед запуском. Тут столкнулся с трудностью, что если перенести все методы на уровень TPSDBTreeView, то не срабатывает событие OnCopyCut. Но это сделаю, позже.

Перенос свойств и событий в объектный инспектор.

Удаление элементов дерева можно упростить при помощи каскадного удаления в таблице.

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

 

Исходники

10_PSDBTreeView

В исходниках сами исходники и пример использования

Как использовать?

Проинсталлировать PSDBTreeView_BPL.

Прописать в пути в tools/options/library/librarypath

\                             // путь до папки, где у Вас будут храниться исходники компонента

\00_Main

\01_TreeView

Далее добавить на форму, настроить перед запуском. Смотрите пример и повторяйте. Будут вопросы пишите.

В базе MySQL создать таблицу с полями как на рисунке выше.

Для базы потребуется libmysql.dll

 

 

 

 

 

 

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

Leave a Reply