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

Вниз

Прокрутка ScrollBox посредством колеса мыши   Найти похожие ветки 

 
kyn66 ©   (2007-03-13 17:40) [0]

Уважаемые, каким образом прикрутить САБЖ? Что нужно написать в событии MouseWheel ?


 
TRUNK ©   (2007-03-13 18:25) [1]

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
Handled := true;
if (WheelDelta > 0) then
 WheelDelta := 10
else
 if (WheelDelta < 0) then
   WheelDelta := -10
 else
   Exit;
if (ssShift in Shift) then
 ScrollBar1.HorzScrollBar.Position := ScrollBar1.HorzScrollBar.Position - WheelDelta
else
 ScrollBar1.VertScrollBar.Position := ScrollBar1.VertScrollBar.Position - WheelDelta;
end;


 
kyn66 ©   (2007-03-13 18:47) [2]

А для чего нужны Handled и зачем проверять на ssShift ?


 
TRUNK ©   (2007-03-13 19:31) [3]

> [2] kyn66 © (13.03.07 18:47)
> А для чего нужны Handled и зачем проверять на ssShift ?

Handled для того что-бы показать, что событие обработано, что-бы оно не посылалось остальным окнам.
ssShift я добавил, что-бы при нажатом Shift прокрутка была по горизонтали, но если ненужно - можно убрать.


 
kyn66 ©   (2007-03-14 09:48) [4]

C шифтом понятно, классно, могет иногда и нужно будет применить. А вот насчет Handled не совсем ешшо. Пробовал иго и включать и выключать - разница показывается лишь при прокрутке картинок на ScrollBox-е . В первом случае они гладко прокручиваются , во втором - с замазыванием и быстро. Хотелось-бы поподробнее о Handled. Что значит показывает что событие обработано? Я пытался  в рантайм создавать на панели ScrollBox, событие ему onMouseWhell, затем кучу картинок на него. Но когда кручу на всем этом колесом - никакой реакции 8-(((. Получается тока на событии формы отлавливать если ScrollBox присутствует, то тогда его скролировать. Неудобно в том плане, что скролировать можно в любом месте формы и на любом элементе.


 
TRUNK ©   (2007-03-14 13:15) [5]

> Что значит показывает что событие обработано?

Сообщение WM_MOUSEWHEEL отличается от большинства других сообщений тем, что если оно не обработано в одном окне,
то оно пересылается его родительскому окну и так далее, пока не будет найдено окно, которое его обработает.

> Я пытался  в рантайм создавать на панели ScrollBox, событие ему onMouseWhell,
> затем кучу картинок на него. Но когда кручу на всем этом колесом - никакой реакции

Если покопаться в исходниках, то можно увидеть, что все контролы пересылают это сообщение форме,
которой они принадлежат.

> Неудобно в том плане, что скролировать можно в любом месте
> формы и на любом элементе

Это решается путём проверки координат курсора, находится ли он в пределах ScrollBox.


 
kyn66 ©   (2007-03-14 15:07) [6]


> Это решается путём проверки координат курсора, находится
> ли он в пределах ScrollBox.


Да, действительно, так и нужно сделать, а скрол прикрутить к форме и все



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
1-1174296970
San ciz
2007-03-19 12:36
2007.05.13
Иконака из длл в Timage. Возможно ли?


2-1177273657
Malik
2007-04-23 00:27
2007.05.13
Вопрос компонентоам создающим дерево


2-1177306193
_Anton_
2007-04-23 09:29
2007.05.13
поднять окно в MDI


9-1149933920
DevilDevil
2006-06-10 14:05
2007.05.13
Мультитекстурирование?


2-1177452950
marathoner
2007-04-25 02:15
2007.05.13
DBGrid - показать данные