DbTreeView. Разработка компонента. Результат. Вторая волна

Данная статья – результат разработки компонента DBTreeView. Для одного из проектов понадобился такой компонент, а в готовом виде, с необходимым функционалом для моей задачи его не оказалось.

Компонент настроен на базу MySQL. В принципе его можно переписать на любую другую базу данных, оттолкнувшись от текущего кода.

Компонент разрабатывался в Delphi Seattle, встает также на XE8! На XE7 не встает, потому что там нужен ImageList.

Всё что мог протестировать сам – протестировал – по основному функционалу утечек ресурсов нет. В частности, память проверял при помощи метода ReportMemoryLeaksOnShutdown:=true;, поставленного в Create тестовой программы.

По большому счету это черновик – всё рабочее – но я практически не занимался обработкой ошибок в данном коде.

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

GUI результат работы DBTreeView

1

Основные возможности

Слева, на рисунке выше, кнопки, отражающие основные возможности компонента

-Обновление дерева (InitialUpdate) в данном случае динамическое. Первоначально загружается нулевой уровень узлов и раскрывается первый узел. Далее загрузка каждого следующего узла происходит в момент раскрытия (Expanding) узла. Так называемая динамическая подгрузка веточек.

-Вставка папки или файла (данный вариант дерева имитирует структуру файл-папка )

-Редактирование имени узла – здесь всё относительно просто

-Поднятие, опускание узла,

-Удаление узла

-Копирование, вырезка, вставка узла – здесь задача была ну очень интересной. Так как после копирования узлов в базе, нужно было восстанавливать их структуру.

-Снятие всех чекбоксов


Таблица в базе данных MySQL

Структура таблицы выглядит примерно следующим образом. Поля таблицы можно называть как угодно, главное их потом корректно отразить в ObjectInspector компонента DBTreeView в разделе DBTreeViewTable. Аналогично с базой данных – настроить её значения можно в разделе компонента DBTreeViewConnParams.

Если нужно добавить какие-то поля, то, чтобы не лезть во внутренности компонента, можно сделать им значения по умолчанию NULL, либо, если это невозможно – поправить модуль SQLQueries.

2

3

Если поменять имена полей, например так…

4

, то тоже будет работать, в общем делал для людей.


ObjectInspector

5

6

 


Исходники

Структура исходников следующая

7

 


Текст инструкции

***************************
* Panteleevstas@gmail.com
* DBTreeView, май 2016
* elGringo *
***************************
1. Распакуйте архив в любое место на диске, например, на рабочий стол, у меня это выглядит так
C:\Users\YellowFriend\Desktop\DBTreeView 0.1

***************************************************

2.Откройте Delphi > Tools > Options > Enviroment Variables > Найдите кнопку New, в правом нижнем углу,
нажмите и добавьте новую переменную
В поле VariableName впишите DBTreeView
В поле Variable Value впишите C:\Users\YellowFriend\Desktop\DBTreeView 0.1
Это поможет Delphi искать все необходимые юниты, которые я использовал для программирования DBTreeView

*****************************************************

3.В папке DataBaseMySQL найдите дамп базы данных DbtreeViewDump.sql
Восстановите из дампа базу данных treeview_db;

******************************************************

4. Перейдите снова в Delphi. Нажмите, File | Open
В папке DBTreeViewBPL откройте файл DBTreeViewPackage.dproj

Откройте ProjectManager и нажмите правой клавишей мыши на
DBTreeViewPackageBPL и далее, в контекстном меню, нажмите Install

*******************************************************

5.Добавьте в проектную группу TestingProgram.dproj из папки TestingProgram.dproj

Скомпилируйте и запустите проект в 1 раз. Вылезет ошибка о том, что файл libmysql.dll не найден
Но! Создастся папка Win32\DEBUG

Возьмите файл libmysql.dll из папки FilesRequired и положите его в папку с EXE

Скомпилируйте и запустите проект во 2 раз и тестируйте возможности DBTreeView;

**********************************************************

Чтобы поменять базу данных и таблицу и поля таблицы, используйте свойства DBTreeView

-DBTreeViewConnParams
-DBTreeViewTable

Вводите данные аккуратно, компонент пока не может распознавать правильность до запуска программы.
Если что-то будет введено неправильно – при тестировании не будет работать одна из функций.


Скачать исходники DBTreeView

Структура проекта в ProjectManager выглядит примерно следующим образом. Основной модуль компонента это uTreeView.


 

8

This entry was posted in Delphi, Без рубрики, Деревья. Bookmark the permalink.