![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Charly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Доброго времени суток всем!
Подскажите, плз., как решить такую задачу: Имеются два объекта TScrollBox - box1 и box2. Они одинаковые по размерам. Нужно сделать так, чтобы горизонтальной (вертикальной) прокрутке в box1 соответствующий скроллбар в box2 находился в той же позиции. То же самое и для box2. То есть нужно сделать синхронную прокрутку для обоих скроллбоксов. Я понимаю, что надо отловить сообщение о прокрутке. Но как?... Если не трудно, поделитесь, плз., примером. |
|||
|
||||
| hawkins |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 8.9.2003 Репутация: нет Всего: нет |
Как-то сталкивался с такой проблемой. Тоже надо было отловить сообщения
о прокрутке. Вобщем наверное это как-то можно сделать. Если пмотреть конструктор TControlScrollBar , то у этого конструктора есть параметр типа TScrollingWinControl, а у этого типа есть обработчики сообщений WMVScroll и WMHScroll, но они записаны в private, наверное надо вынести их published. Или можно сделать так: у ScrollBox сделать его ScrollBar-ы невидимыми, а вместо них поставить обычные TScrollBar растянуть их вручную по левой и нижней стороне, а у них есть свои обработчик OnScroll; ну а в обработчике перемещать те обекты которые расположены внутри ScrollBox-a в соответствии со значением position ScrollBar-ов . Кстати я тогда вместо TScrollBox ставил TPanel. Или как я говорил попробовать вынести обработчики из private в published. P.S. The Matrix has you ... |
|||
|
||||
| hawkins |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 8.9.2003 Репутация: нет Всего: нет |
Для синхронизации есть простой способ : поставить на форму TApplicationEvents и обрабатывать все сообщения поступающие в окно:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin Box2.VertScrollBar.Position:=Box1.VertScrollBar.Position; Box1.VertScrollBar.Position:=Box2.VertScrollBar.Position; Box2.HorzScrollBar.Position:=Box1.HorzScrollBar.Position; Box1.HorzScrollBar.Position:=Box2.HorzScrollBar.Position; end; |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
hawkins Как-то это накладно получается... По-китайски.
|
|||
|
||||
| Charly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Спасибо всем!
Разобрался на примере синхронизации прокрутки в TListBox. Вот коротенький юнит:
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |