![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Синхронизация скроллинга в нескольких гридах !? [D7]
MaxY © (2005-12-27 13:49:00)Добрый день.
Вот встала такая проблема. Решил предоставить пользователю информацию в трех гридах (расположены слева направо). Так как строка представляется на всех трех гридах (по частям, начало в первом, середина во втором и конец в третьем), то нужно добиться синхронного перемещения фокуса во всех гридах (как если бы это был один).
Использую cxGrid, в них обычные cxGridTableView. Вот добился синхронизации при навигации с клавиатуры и со скроллинга мышки. Все движется как надо. Осталась одна проблема: скроллирование грида по вертикальному скроллбару (фокус то стоит нормально во всех гридах, да вот в одном он на верхней строке, в другом на нижней и тд). Событий на эту штуку не нашел.
Есть вот событие onTopRecordIndexChanged, но такого свойства как TopRecordIndex нет.
Кто подскажет, как устранить такое поведение?
P.S. А вообще это нужно для возможности горизонтально скроллировать все три грида независимо друг от друга.
MaxY (2006-01-07 13:09:00) [1]Всем спасибо за советы.
Я нашел самое простое решение 8))
Весьма интересный компонент этот, cxGrid. Сколько его не использую всегда есть такое, чего еще применял. Вот и теперь. У TcxGridTableViewнашел свойство Controller, а у него есть свойство TopRecordIndex. Вот его изменение и производишь в вышеназванном обработчике onTopRecordIndexChanged.
И все решение тупо сводится к
grvTable1.Controller.TopRecordIndex := grvTable2.Controller.TopRecordIndex;
Desdechado (2005-12-28 22:51:00) [2]а если попробовать в одном гриде, но имитировать фиксированные колонки принудительной программной их перестановкой при горизонтальном скроллинге
типа, лезем вправо - колонки "подползают" под "фиксированные"
лезем влево, колонки кыползают из-под фиксированных
это визуально
а в коде просто номера фиксированных колонок увеличивать или уменьшать
Prohodil Mimo (2005-12-28 20:43:00) [3]я когдато давно делал так : у всех гридов (TStringGrid) убрал верт. скролы, а вместо них повесил один TScrollBar, общий для всех, и на его события повесил управление гридами.
Делал нечто для сравнения содержимого двух файлов.
Deka (2005-12-28 16:53:00) [4]Господа, у меня идея! Надо сделать один грид с разделителями (или колонками - как хотите) а горизонтальный скролинг для каждой колонки реализоватьпрограммно. Т.е. под каждой колонкой разместить скролбар а строки для грида формировать составляя их из трех обычных строк. Немного усложняется код, зато все в подряке с синхронизацией. Ваше мнение?
Deka (2005-12-28 13:00:00) [5]Это просто предположение. Исходники есть? Изучай как работает стандратный скрол.
MaxY (2005-12-27 15:47:00) [6]
> ANB © (27.12.05 15:25) [3]
> А запихать все в один грид в разные колонки не судьба ?
колонка = столбец? так не пойдет, горизонтальный скроллинг будет двигать всю область - от этого и нужно уйти.
Эхлибовский грид не пользую. И не хочу его применять, по ряду причин.
> Deka © (27.12.05 15:25) [4]
а как это можно сделать? Тем более я даже не знаю какие там события
ANB (2005-12-27 15:25:00) [7]
> MaxY (27.12.05 15:04) [2]
А запихать все в один грид в разные колонки не судьба ?
Эхлибовский позволяет менять высоту колонки и автоматически их растягивает/сжимает по вертикали.
Deka (2005-12-27 15:25:00) [8]Может размножить событие от скролбара на все гриды?
MaxY (2005-12-27 15:04:00) [9]Упрощать не буду. Если решения не найду, просто придется убрать скролбар вертикальный.
Просто это лучшее, что можно было придумать для отображения таких данных, причем не лишь бы показать... В таком виде будет очень удобно анализировать данные.
Jeer (2005-12-27 13:57:00) [10]Может изначально идеологический подход не верен ?
Упрощай :)