При очистке данных в VirtualStringTree происходит прокрутка влево на первый столбец.

shmelina
Дата: 04.05.2011 22:28:40
Использую VST в режиме таблицы. В таблице много столбцов.
Горизонтально прокручиваю таблицу влево (полоса скрола вправо). Щелкаю по заголовку столбца.
Происходит пересоздание запроса с сортировкой по кликнутому столбцу.
Данные в VST очищаются, а затем заполняются снова. И VST скролирует таблицу на первый столбец.
Как это побороть? Хотелось бы, чтобы горизонтальный скрол не дергался.
чччД
Дата: 04.05.2011 23:18:19
shmelina
Использую VST в режиме таблицы. В таблице много столбцов.
Горизонтально прокручиваю таблицу влево (полоса скрола вправо). Щелкаю по заголовку столбца.
Происходит пересоздание запроса с сортировкой по кликнутому столбцу.
Данные в VST очищаются, а затем заполняются снова. И VST скролирует таблицу на первый столбец.
Как это побороть? Хотелось бы, чтобы горизонтальный скрол не дергался.

Попробуй выставить правильные опции в настройках VST.
В крайнем случае, исправь ошибочный код.
FlyD
Дата: 04.05.2011 23:47:06
shmelina
Происходит пересоздание запроса с сортировкой по кликнутому столбцу.
Данные в VST очищаются, а затем заполняются снова.
Зачем делать перезапрос? У VTV есть возможность сортировки отображаемых данных по
столбцам. Sort, SortTree, OnCompareNodes и т.д.

Если не нравится с локальной сортировкой, то возможные варианты:
1. BeginUpdate/EndUpdate, если есть.
2. до обновления можно запоминать положение прокрутки через OffsetXY, а после
восстанавливать.

ЗЫ кстати, в vtv была бага в методе ScrollIntoView. Сейчас ее устранили, последняя версия
с корректной работой ScrollIntoView: 4.8.7, если не ошибаюсь. Правда, добавились другие :)
fd00ch
Дата: 05.05.2011 00:04:02
shmelina, если так хочется удалять и заново заполнять список при сортировке, то перед удалением запомни значение OffsetX, после сортировки - восстанови его
shmelina
Дата: 05.05.2011 11:21:38
> Попробуй выставить правильные опции в настройках VST
Пробовал. Не нашел таких.

> В крайнем случае, исправь ошибочный код
Сложноват для меня этот код. Не тот у меня уровень.

> Зачем делать перезапрос? У VTV есть возможность сортировки отображаемых данных по столбцам. Sort, SortTree, OnCompareNodes и т.д.
Запрос идет в базу данных и данные не все подгружаются в таблицу. Сортировать локально не корректно.

> BeginUpdate/EndUpdate
Это не поможет, это чтобы не моргало.

> кстати, в vtv была бага в методе ScrollIntoView
Это не то. И у меня версия 4.8.7.

> запомни значение OffsetX, после сортировки - восстанови его
То, что нужно! Спасибо!