Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1137484094
Ega23
2006-01-17 10:48
2006.02.05
CoCreateGUID - в каком юните находится?


15-1137503871
IceBeerg
2006-01-17 16:17
2006.02.05
Самовольный dualup


3-1133868377
Tor
2005-12-06 14:26
2006.02.05
error loading MIDAS.DLL


2-1137512161
Rust007
2006-01-17 18:36
2006.02.05
Как создать фаил, который может прочитать только сама программа


15-1137143922
kaif
2006-01-13 12:18
2006.02.05
Вопрос по Java





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский