Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема со скроллом в VirtualTreeView


Автор: estra 17.12.2009, 21:55
Проблена при скрытии/отображении нодов в VirtualTreeView. К вопросу прилагаю тестовое приложение.
http://www.onlinedisk.ru/file/295864/
Суть в следующем. Ключевой в этом примере является процедура FindInTree. Она выполняет рекурсивный обход дерева и скрывает узлы, не соответствующие фильтру.
В примере 26 корневых узлов с названиями от A до Z, у каждого из которых случайное количество дочерних узлов.
Так вот, допустим делается поиск по букве A. Все ненужные узлы скрываются, все хорошо. Восле чего снимаем фильтр (очищаем текстовое поле и ажимаем на кнопку). Мы должны увидеть все корневые узлы от A до Z, но тут то и начинается проблема. Часть нижних узлов не отображается. Если действие повторить, то скроется еще часть узлов, потом еще и еще... Почему так происходит и как от этого избавиться? Проблема с вертикальним скролом, такое ощущение что его максимальное значение неправильно высчитывается и с каждым разом уменьшается… Очень прошу помоч разобраться и решить проблему.

Автор: Teleport 17.12.2009, 22:25
В твоем проекте какие-то косяки - я сам не понял какие, но моя Делфи отказывалась воспринимать при открытии опции Header. Я их проигнорил и заново создал событие OnGetText - так как компилятор ругался на него. Вышло все норм. Держи:

Автор: estra 17.12.2009, 22:31
Проблема с OnGetText связана скорее всего с газными версиями компонента. У меня версия 4.8.6 и 2010 студия.

странно, интересно это косяк компонента или студии… есть идеи, почему так может быть?

перекомпелил твои исходники, результат хреновый, работает некорректно :(

Автор: Teleport 17.12.2009, 22:35
У меня Делфи 2007 сейчас и VT 4.7.0. Уверен на 99.99% - косяк в VT, а не в самой среде. 
Мой exe работает корректно? Поставь VT 4.7.0 - погляди.


Автор: estra 17.12.2009, 22:41
твой exe работает корректно. а версии ниже 4.8.6 на 2010 студию не ставятся…

Автор: Teleport 17.12.2009, 23:28
К сожалению, не могу проверить твою версию сейчас. Попробуй в конце обработчика нажатия на кнопку написать
Код

 VirtualStringTree1.ScrollBarOptions.ScrollBars:= ssNone;
 VirtualStringTree1.ScrollBarOptions.ScrollBars:= ssBoth;

Автор: estra 18.12.2009, 09:44
Цитата(Teleport @ 17.12.2009,  23:28)
К сожалению, не могу проверить твою версию сейчас. Попробуй в конце обработчика нажатия на кнопку написать
Код

 VirtualStringTree1.ScrollBarOptions.ScrollBars:= ssNone;
 VirtualStringTree1.ScrollBarOptions.ScrollBars:= ssBoth;

Идея хорошая, но не сработала.

Автор: estra 18.12.2009, 11:16
Неужели никто с этим не сталкивался? Может все-таки есть такие люди… Плиз, помогите, очень нужно  smile 

Автор: Modesty 3.8.2012, 14:27
похоже и в пятой версии проблема осталась

Автор: kami 3.8.2012, 18:57
Версия 4.8.5 отлично ставится на D2010.
В свое время остался на ней из-за именно этого глюка в более поздних версиях, таких как 4.8.6 и выше. Вы не первый, кто задает вопрос по некорректному просчету высоты канвы в 4.8.6.
Говорили, что в более поздних версиях это убрано, но не проверял.

Автор: ZBugz 4.8.2012, 09:43
Цитата(Modesty @ 3.8.2012,  14:27)
похоже и в пятой версии проблема осталась

Задай им вопрос, они исправят https://code.google.com/p/virtual-treeview/issues/list

Автор: tarakan 8.6.2015, 12:00
estra, скажите не решили проблему со скролингом?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)