Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

Синхронизация скроллинга в нескольких гридах !?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
2-1137508580
Dec
2006-01-17 17:36
2006.02.05
Как сделать невидимым главное меню?


2-1137495442
V0va
2006-01-17 13:57
2006.02.05
Как заменить скроллбары в tmemo, tlistbox и тд на свой?


2-1137435882
Navi
2006-01-16 21:24
2006.02.05
Ошибка удаления записи


3-1133462062
Сергей А.
2005-12-01 21:34
2006.02.05
Как поймать ошибку при загрузке данных из таблицы?


2-1137686543
лом
2006-01-19 19:02
2006.02.05
Функция inc