|
|
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
Читаю вот здесь http://delphigears.blogspot.com/2011/08/virtual-treeview.html и здесь https://www.kansoftware.ru/?tid=5261 Например есть код для рекурсивного поиска, который как бы должен работать https://forum.vingrad.ru/forum/topic-355385.html Но он не работает, потому что пытается нарушить основной принцип Virtual TreeView: тянуть по требованию, т.е. пока вложенные ветки не понадобились, никто не будет физически их создавать, они создаются в момент, когда пользователь потребовал эту ветку (кликнул мышью на плюсик, раскрывающий дочерний уровень). В коде же предполагается, что дерево заполнено полностью. Я конечно вышел из положения, нарушив основной принцип - процедуру заполнения дерева сделал рекурсивной, и она сразу полностью заполняет все ветки дерева, даже невидимые. Но в дереве есть "родной" метод IncrementalSearch. Что же получается, он при поиске принудительно заполняет все ветки, нарушая свой же принцип? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 17:03 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
Еще есть "фишка" - если заполняешь дерево по правилам "on demand" - заполняешь дочерний уровень через событие OnInitNode, а в рекурсивном поиске делаешь принудительное заполнение дочерних веток перед поиском, то дочерние ветки дублируются. Если не делать принудительное заполнение, то поиск осуществляется не глубже 2-го уровня. Из-за непонятной хитрой логики работы OnInitNode. В том и коварность этого дерева, что на первый взгляд все работает. Глюки начинаешь замечать, когда уже пользователь по факту начинает серьезно использовать дерево, заполняя более глубокие уровни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 17:08 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
Нашел решение для рекурсивного поиска: чтобы поиск осуществлялся дальше 2й ветки, нужно делать фокусировку на текущей обрабатываемой ветке, тогда InitNode срабатывает на полную глубину всех вложенных веток, а если нет, то только на глубину второго уровня. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 17:24 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad Но он не работает, потому что пытается нарушить основной принцип Virtual TreeView: тянуть по требованию... ... В коде же предполагается, что дерево заполнено полностью. ... Чудак-человек, явно сказано: делай так , ты же нет - "так я не делаю" , ...и? Ладно, открываю самую главную тайну №2. Тайна №2 Храни содержимое дерева отдельно. И поиск выполняй в этом самом "отдельно". В структуре памяти, в СУБД. А TVirtualStringTree используй для отображения. Например, ищешь в СУБД , совсем просто. В качестве результата формируется путь к найденному элементу. Далее последовательно идешь по найденным элементам пути уже в визуальном дереве и отображаешь результат. Мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 18:03 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ svnvlad Но он не работает, потому что пытается нарушить основной принцип Virtual TreeView: тянуть по требованию... ... В коде же предполагается, что дерево заполнено полностью. ... Чудак-человек, явно сказано: делай так , ты же нет - "так я не делаю" , ...и? Где это сказано? Сколько ни искал, везде приводятся примеры поиска только внутри дерева. А мысль искать в базе, строить путь к ветке, и потом мгновенно открывать - была, но руки не дошли, это надо придумать механизм запоминания и разворачивания этого пути. Опять же, сами создатели дерева предлагают искать по дереву с помощью встроенного события OnIncrementalSearch. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 18:11 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad это надо придумать механизм запоминания и разворачивания этого пути. Механизм уже придуман и скорее всего реализован в СУБД. Либо небольшая хранимка, которая по паренту лезет до верха выплевывая свой путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 19:09 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad Где это сказано? Сколько ни искал, везде приводятся примеры поиска только внутри дерева. Ну вот я тебе прямо сейчас сказал. Лови момент. Про тянуть, а не толкать - в доке сказано. Если контекстных данных в дереве нет - какой в нем может быть поиск, до полной инициализации контекста? И, даже если данные уже в дереве - поиск быстрый, но - последовательный. То есть, на больших объемах все равно лучше искать не в визуальном компоненте, а в структуре данных, которую этот компонент отображает. А если знаешь путь - то поиск не последовательный, а "бинарный", то есть - быстрый даже на больших объемах. Давай-давай, включаем моск. А то будешь, как один из местных товарищей, который для поддержки древовидной структуры создавал невидимый TTreeView. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 19:58 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad мысль искать в базе, строить путь к ветке, и потом мгновенно открывать - была, но руки не дошли, это надо придумать механизм запоминания и разворачивания этого пути. "Black Lives Matter"? Да шиш тебе! Солнце ещё высоко! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 20:00 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
wadman svnvlad это надо придумать механизм запоминания и разворачивания этого пути. Механизм уже придуман и скорее всего реализован в СУБД. Либо небольшая хранимка, которая по паренту лезет до верха выплевывая свой путь. У меня даже есть эта хранимка, правда не для id, а для sequence_number, чтобы из локальных номеров строить полные, типа 5.2.1. Осталось написать такую же процедуру для дерева, только наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 23:44 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
А может у них есть демки для TreeView? Подсказал бы кто, где их искать? Вот в вышеприведенных примерах по ссылке для заполнения дерева вот такой код: Код: pascal 1. 2. 3. 4. 5. У меня же просто Код: pascal 1. 2. Кто знает, зачем они пишут ReinitNode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 23:50 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
Вопрос сформулируй, конкретный. Разве это вопросы: svnvladVirtual TreeView - есть ли нормальное полное описание его работы? svnvlad Что же получается svnvlad непонятной хитрой логики работы ? Пиши, подумав предварительно. Что это за странные утверждения, например: svnvlad Но в дереве есть "родной" метод IncrementalSearch. - какой нафиг "метод"? При чем тут реализация поиска при вводе строки к твоей задаче? Да, при поиске "по вводу" может принудительно инициализировать узлы, всё зависит от значения свойства IncrementalSearch. svnvlad создатели дерева предлагают искать по дереву с помощью встроенного события OnIncrementalSearch С чего такой странный вывод? Как будто бы ты не изучил демки и документацию, а сразу хочешь "нагнуть" VST под свое видение прекрасного. Но это конечно же не так. ... "Рекурсивный" поиск по дереву реализуется парой методов: GetFirst и GetNext. Код: pascal 1. 2. 3. 4. 5. Метод GetNext() выполняет обход с заходом в детей, т.е., "рекурсивно". Прямо в этих методах проверяется, был ли инициализирован узел ранее - если не был, для узла вызывается процедура инициализации, InitNode/InitChildren. Если ты не написал обработчиков OnInitNode/OnInitChildren, или как-то ещё создал узел, но не инициализировав его - пиши жалобы в Спортлото: данных нет - что обрабатывать? Для поиска данных в структуре эти самые данные в этой структуре должны присутствовать. Или загрузи эти данные заранее, или подгружай их по ходу поиска, или ищи их там, где они уже есть (в базе данных). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2020, 01:12 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ Вопрос сформулируй, конкретный. Разве это вопросы: svnvladVirtual TreeView - есть ли нормальное полное описание его работы? ? Буквально то и спрашивал: где полная справка по компоненту? На сайте производителя не нашел. Как будто бы ты не изучил демки и документацию, а сразу хочешь "нагнуть" VST под свое видение прекрасного. Но это конечно же не так. Не изучил. Весь код, который есть, надерган из интернета и придуман самостоятельно. Где демки, вопрос сложный. "Рекурсивный" поиск по дереву реализуется парой методов: GetFirst и GetNext. Код: pascal 1. 2. 3. 4. 5. Метод GetNext() выполняет обход с заходом в детей, т.е., "рекурсивно". Прямо в этих методах проверяется, был ли инициализирован узел ранее - если не был, для узла вызывается процедура инициализации, InitNode/InitChildren. Это настоящее открытие. Я писал рекурсивную процедуру, и перебирал GenNextSibling. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2020, 22:43 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad На сайте производителя не нашел. https://github.com/TurboPack/VirtualTreeView - в папке Help - не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2020, 00:07 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
svnvlad, Полное описание - это исходники. А они идут в комплекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2020, 22:57 |
|
||
|
Virtual TreeView - есть ли нормальное полное описание его работы?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ svnvlad На сайте производителя не нашел. https://github.com/TurboPack/VirtualTreeView - в папке Help - не? Не надо давать ссылки на форки https://github.com/JAM-Software/Virtual-TreeView - официальный репо https://github.com/JAM-Software/Virtual-TreeView/tree/master/Demos - демки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2020, 15:10 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=41&tid=2038178]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 322ms |

| 0 / 0 |
