| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > ScrollBox |
| Автор: Charly 7.11.2003, 02:49 |
| Доброго времени суток всем! Подскажите, плз., как решить такую задачу: Имеются два объекта TScrollBox - box1 и box2. Они одинаковые по размерам. Нужно сделать так, чтобы горизонтальной (вертикальной) прокрутке в box1 соответствующий скроллбар в box2 находился в той же позиции. То же самое и для box2. То есть нужно сделать синхронную прокрутку для обоих скроллбоксов. Я понимаю, что надо отловить сообщение о прокрутке. Но как?... Если не трудно, поделитесь, плз., примером. |
| Автор: hawkins 7.11.2003, 13:15 |
| Как-то сталкивался с такой проблемой. Тоже надо было отловить сообщения о прокрутке. Вобщем наверное это как-то можно сделать. Если пмотреть конструктор 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 7.11.2003, 15:31 |
| Для синхронизации есть простой способ : поставить на форму 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 7.11.2003, 20:19 |
| hawkins Как-то это накладно получается... По-китайски. |
| Автор: Charly 8.11.2003, 01:18 | ||
| Спасибо всем! Разобрался на примере синхронизации прокрутки в TListBox. Вот коротенький юнит:
|