Category Archives: Деревья

Delphi. Иерархические данные. DBTreeView своими руками. Удаление “Checked” узлов в отдельном потоке

В данной статье описан алгоритм удаления узлов, отмеченных галочками в случае, когда дерево загружается динамически (то есть не полностью). Сам алгоритм работает из отдельного потока. Идея в том, чтобы собрать список “чекнутых” узлов, рекурсивно пройтись по базе, чтобы узнать есть … Continue reading

Posted in Delphi, Деревья | Leave a comment

Delphi. Иерархические данные. DBTreeView своими руками. Чекбоксы в отдельном потоке

Решил добавить многопоточности в дерево. Cтолкнулся с тем, что при большом количестве потомков у узла, больше 500, начинаются  тормоза с проставлением галочек у всех потомков. Я запрограммировал так, что при нажатии на узел родителя, если у него есть узлы дети, … Continue reading

Posted in Delphi, Без рубрики, Деревья | Leave a comment

Delphi. Иерархические данные. DBTreeView своими руками. Динамическая подгрузка веточек

Идея динамической подгрузки веточек-узлов пришла ко мне, когда я стал добавлять по 500 узлов в узлы родители, и при загрузке дерева стала ощущаться задержка. Я так и представил разрастающиеся базы пользователей и эти долгие загрузки со всеми последствиями. Оно и … Continue reading

Posted in Delphi, Деревья | Leave a comment

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

В связи с тем, что переделал алгоритм загрузки данных для дерева до динамического, пришлось переделать алгоритм удаления из базы. При динамической подгрузке в TreeView видны узлы лишь до уровня, открытого пользователем. Всё что глубже – просто не загружено. Поэтому как … Continue reading

Posted in Delphi, Без рубрики, Деревья | Leave a comment

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

Решил немного позаниматься украшательством – добавить значки папок и файлов, получилось вот что… Пробовал разными способами, но получилось вот так

Posted in Delphi, Деревья | Leave a comment

Delphi. Иерархические данные. DBTreeView своими руками. Приведение CheckBoxes в нормальное состояние

Пока не нашел свойство DisplayRect у TTreeNode, не знал как быть с чекбоксами, а то поставить то я их поставил, а вот работали они не совсем адекватно. То есть при нажатии на текст, скажем – нажимались и чекбоксы, а мне нужно было … Continue reading

Posted in Delphi, Деревья | Comments Off on Delphi. Иерархические данные. DBTreeView своими руками. Приведение CheckBoxes в нормальное состояние

Delphi. Иерархические данные. DBTreeView своими руками. Удаляем несколько узлов с помощью Checkboxes

В данной статье посмотрим на алгоритм удаления при помощи Checkboxes. Суть такая же, при удалении узла нужно удалить всех его детей. Но реализация немного другая, отличная от той, где мы удаляли через Selection. Алгоритм, прямо скажу, не быстрый, но рабочий. … Continue reading

Posted in Delphi, Деревья | Comments Off on Delphi. Иерархические данные. DBTreeView своими руками. Удаляем несколько узлов с помощью Checkboxes

Delphi. TreeView. Способы обхода дерева

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

Обход в глубину узла 1

Данная процедура обходит родителя и всех детей – рекурсивно. Вот ссылка на сайт, где  взял … Continue reading

Posted in Delphi, Без рубрики, Деревья | Comments Off on Delphi. TreeView. Способы обхода дерева

Delphi. Иерархические данные. DBTreeView своими руками. Добавляем Checkboxes

Продолжаем серию DBTreeView своими руками. В данной статье добавим Checkboxes к элементам дерева при помощи свойства StateIndex. Добавим CheckBoxes и свяжем их статус с базой данных. Скажу сразу, что Checkboxes здесь это картинки 16*16 и можно организовать любые другие картинки, например … Continue reading

Posted in Delphi, Без рубрики, Деревья | Comments Off on Delphi. Иерархические данные. DBTreeView своими руками. Добавляем Checkboxes

Delphi. Иерархические данные. DBTreeView своими руками. Удаление нескольких узлов

В данной статье посмотрим на удаление данных из дерева, поддерживающего связку с базой данных. Мы уже удаляли один узел, там нужно было удалить всех детей узла, в базе и в дереве, и только потом удалить сам узел. В данном примере … Continue reading

Posted in Delphi, Деревья | Comments Off on Delphi. Иерархические данные. DBTreeView своими руками. Удаление нескольких узлов