Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по синхронизации прокрутки двух KolListBox


LAutour ©   (2006-03-23 10:43:00) 

Как синхронизировать прокрутку в двух ListBox (KolListBox).
Поиски в интернете не блещут разнообразием примеров по подобному вопросу.


LAutour   (2006-03-24 06:48:00) [1]

Спасибо.


ECM   (2006-03-23 15:06:00) [2]

А поиск по MSDN не пробовали?  :))

Я так понимаю что интересует вертикальная прокрутка...?

Например так (если пользоваться встроенной в ListBox полосой прокрутки):

procedure TForm1.ListBox2Scroll(Sender: PControl; Bar: TScrollerBar;
 ScrollCmd, ThumbPos: Cardinal);
begin
 ListBox1.Perform(LB_SETTOPINDEX,ListBox2.Perform(LB_GETTOPINDEX,0,0),0);
end;

procedure TForm1.ListBox1Scroll(Sender: PControl; Bar: TScrollerBar;
 ScrollCmd, ThumbPos: Cardinal);
begin
 ListBox2.Perform(LB_SETTOPINDEX,ListBox1.Perform(LB_GETTOPINDEX,0,0),0);
end;


Почитайте в MSDN о LB_SETTOPINDEX, LB_GETTOPINDEX

З.Ы. Этот способ ИМХО не очень "красиво" выглядит. Две полосы прокрутки (у каждого списка своя). Список который прокручивается программно визуально отстает (видно как сначала прокручивается один - потом его догоняет второй).
"Красивее" сл. решение - выключаем в обоих списках собственную полосу прокрутки:
loNoHideScroll = TRUE и  ListBoxN.Style := ListBoxN.Style and (not WS_VSCROLL);
Делаем отдельный общий Скроллбокс и для него:

procedure TForm1.ScrollBar1SBScroll(Sender: PControl; Cmd: Word);
begin
 ListBox2.Perform(LB_SETTOPINDEX,ScrollBar1.SBPosition,0);
 ListBox1.Perform(LB_SETTOPINDEX,ScrollBar1.SBPosition,0);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо