|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос по StringGrid (неприятная мелочь)
Преамбула. Есть СтрингГрид, в котором общее количество строк больше видимых (RowCount>1000 => видимых на компоненте = 100), при этом последняя видимая строка (100-я), видна на половину .
Фабула. Клик мышью на 100-й строке вызывает нервное дерганье СтрингГрида и выделение строки гораздо ниже 100-й. Вопрос. Это глюк VCL или что-то еще, и как можно излечить. OnClick не переопределен, т.е. обработчик стандартный. |
#2
|
||||
|
||||
Если нет своей перерисовки, то можно попробовать грузить не все 1000 строк, а только видимые.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Перерисовки нет, только на MouseMove переопределнние StringGrig.Hint (показать каждой строке свой хинт).
И смысл в том, что все 1000 строк нужны здесь и сейчас. Последний раз редактировалось icsander, 08.05.2012 в 00:42. |
#4
|
||||
|
||||
Может ListView поможет?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
Вообще у меня лично наблюдается несколько иной эффект. Срабатывает автоскрол при нажатии на нижнюю строчку, не важно при этом видима она частично или полностью.
И кстати, чем вызван выбор именно StringGrid для столь большого объема данных? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Цитата:
2.Ну про 1000 строк я загнул, так, для примера. А StringGrid удобен для отображения табличных данных. В чужой проге подсмотрел WinSniffer-ом похожий Grid (TJvDBGrid). Там отрисовываются только полностью видимые строки. Я пробовал переопределить OnDrawItem, но даже если строка не отрисована, клик на ней все равно вызывает OnClick. Сторонние компоненты использую с осторожностью - не хочется к своим косякам прибавлять чужие. |
#7
|
||||
|
||||
Я тоже не нашел никаких настроек отключающих эту фичу. Видимо надо писать своего наследника с переделаной реакций на клик в нижней строке или взять уже готовый сторонний компонент. Насчет нежелания использовать сторонние компоненты, где-то понимаю. Но убивать кучу времени на изобретение того, что уже давно успешно реализовано, тоже не айс. Можно ведь и DBGrid использовать для вашей задачи. Мне кажется он вам больше подойдет.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
Цитата:
2.Уже приходилось править сторонние компоненты (free), ну есть ошибки . 3. Цитата:
Последний раз редактировалось icsander, 08.05.2012 в 22:47. |
#9
|
||||
|
||||
Как говорил герой одной сказочки:
- Нам бы схемку, иль чертеж, - Мы б затеяли вертеж, Пример данных дайте для ориентировки и в каком виде они у вас, перед запихиванием в грид, находятся. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
В гриде текстовые данные в 2 колонки. Длина текста местами может достигать >1000 символов и содержать "#13#10". Загрузка и сохранение в файл - через TFileStream. Но вопрос про автоскролл остается открытым.
Я так понимаю у винды нет такого компонента. Используется SysListView32 и у него нет такой "фичи". Может , как советовал angvelem, пользовать ListView ? Последний раз редактировалось icsander, 09.05.2012 в 10:18. |
#11
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |