|
Вопрос # 3 086/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Можно ли, чтобы ScrollBox, во время нахождения в нем фокуса мыши, скроллился от колеса мыши? Если да, то как?
Спасибо за ответ.
 |
Вопрос задал: Pessimist (статус: Посетитель)
Вопрос отправлен: 14 августа 2009, 07:43
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Amidamaru
Здравствуйте, Pessimist!
Для этой задачи потребуется событие OnMessage у Application.
Самый простой способ - кинуть на форму компонент TApplicationEvents и использовать его событие OnMessage.
Код который нужно вставить в обработчик в приложении.
Приложение: Переключить в обычный режим- procedure TForm1.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
- var ctrl:TControl;
- i:smallint;
- begin
- with msg do
- if message=WM_MOUSEWHEEL then
- begin
-
- ctrl:=ControlAtPos(ScreenToClient(pt),false,true);
- if ctrl is TScrollBox then
- begin
-
- i:=smallint(hiword(wParam));
- if i<>0 then
- if i<0 then
- PostMessage((ctrl as TScrollBox).Handle,WM_VSCROLL,MakeWParam(SB_LINEDOWN,0),0)
- else PostMessage((ctrl as TScrollBox).Handle,WM_VSCROLL,MakeWParam(SB_LINEUP,0),0);
-
- Handled:=true;
- end;
- end;
- end;
 |
Ответ отправил: Amidamaru (статус: 4-ый класс)
Время отправки: 15 августа 2009, 19:33
Оценка за ответ: 5
Комментарий к оценке: Спасибо. А то лежу, стараюсь поймать вдохновение и понял, что не смогу сделать такое. Запомню и использую.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 15 августа 2009, 20:12; участников в обсуждении: 2.
|
Amidamaru (статус: 4-ый класс), 15 августа 2009, 18:29 [#1]:
Можно. Перехватывать сообщения мыши о движении колесика и скролить тот скролбокс, который в данный момент под курсором.
|
|
Pessimist (статус: Посетитель), 15 августа 2009, 18:36 [#2]:
перехватить сообщение еще смогу, а вот что-то не могу понять..как скролбар скролится...
|
|
Amidamaru (статус: 4-ый класс), 15 августа 2009, 18:56 [#3]:
Я раньше както делал в RiсhEdit, думаю тут будет не сложнее. Я щас разберусь с WM_MOUSEWHEEL и напишу в ответ.
|
|
Amidamaru (статус: 4-ый класс), 15 августа 2009, 20:12 [#4]:
Советую почитать help. У WM_MOUSEWHEEL и WM_VSCROLL (WM_HSCROLL) есть ещё немало интересного.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|