Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

Прокрутка 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
2-1177330092
Thely
2007-04-23 16:08
2007.05.13
Перевод string в PWideChar.


15-1174904932
infom
2007-03-26 14:28
2007.05.13
Комплексное решение для разработчиков ПО


6-1163088101
Суслик
2006-11-09 19:01
2007.05.13
Создание HTTP сервара на дельфи


2-1176980811
Romm
2007-04-19 15:06
2007.05.13
уничтожение активного окна


2-1177416203
Lamborgini
2007-04-24 16:03
2007.05.13
Помощь нужна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский