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