Delphi. Иерархические данные. DBTreeView своими руками. Делим узлы на папки и файлы

41

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

Часто в деревьях встречается задача деления узлов на папки и файлы, группы вопросов и сами вопросы и так далее, поэтому решил реализовать этот функционал в DBTReeView.

То есть в дереве каждый узел будет либо папкой, либо файлом. Переподчинить можно будет только папке.

Нужно будет ввести несколько ограничений, вот некоторые из них.

1. В файл нельзя ничего добавить (ни файл ни папку)

2.  Ограничение на Drag&Drop – нельзя переносить в файл, только в папку

Вот как будет выглядеть результат

35

 

Для этого в базе сделаем соответствующее поле IsFolder, MySQL я сделал поле TinyINT(1)36

Интерфейсная часть

Implementation


MAINFORM

Создание и уничтожение переменной

Добавить папку

Добавить файл

Ограничение на DragOver

Иконки

Для того, чтобы иконки отображались корректно, нужно сделать следующее

Добавить ImageList и 3 иконки 16*16

37

 

Указать в свойстве TreeView1 соответствующий ImageList

38

И прописать следующий код

 

 

 

 

This entry was posted in Delphi, Деревья. Bookmark the permalink.