Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 086

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Можно ли, чтобы ScrollBox, во время нахождения в нем фокуса мыши, скроллился от колеса мыши? Если да, то как?
Спасибо за ответ.

Pessimist Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Pessimist (статус: Посетитель)
Вопрос отправлен: 14 августа 2009, 07:43
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Amidamaru

Здравствуйте, Pessimist!
Для этой задачи потребуется событие OnMessage у Application.
Самый простой способ - кинуть на форму компонент TApplicationEvents и использовать его событие OnMessage.
Код который нужно вставить в обработчик в приложении.

Приложение:
  1. procedure TForm1.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
  2. var ctrl:TControl;
  3. i:smallint;
  4. begin
  5. with msg do
  6. if message=WM_MOUSEWHEEL then
  7. begin
  8.  
  9. ctrl:=ControlAtPos(ScreenToClient(pt),false,true);
  10. if ctrl is TScrollBox then
  11. begin
  12.  
  13. i:=smallint(hiword(wParam));
  14. if i<>0 then
  15. if i<0 then
  16. PostMessage((ctrl as TScrollBox).Handle,WM_VSCROLL,MakeWParam(SB_LINEDOWN,0),0)
  17. else PostMessage((ctrl as TScrollBox).Handle,WM_VSCROLL,MakeWParam(SB_LINEUP,0),0);
  18.  
  19. Handled:=true;
  20. end;
  21. end;
  22. end;


Ответ отправил: Amidamaru (статус: 4-ый класс)
Время отправки: 15 августа 2009, 19:33
Оценка за ответ: 5

Комментарий к оценке: Спасибо. А то лежу, стараюсь поймать вдохновение и понял, что не смогу сделать такое. Запомню и использую.

Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 15 августа 2009, 20:12; участников в обсуждении: 2.
Amidamaru

Amidamaru (статус: 4-ый класс), 15 августа 2009, 18:29 [#1]:

Можно. Перехватывать сообщения мыши о движении колесика и скролить тот скролбокс, который в данный момент под курсором.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
Pessimist

Pessimist (статус: Посетитель), 15 августа 2009, 18:36 [#2]:

перехватить сообщение еще смогу, а вот что-то не могу понять..как скролбар скролится...
Amidamaru

Amidamaru (статус: 4-ый класс), 15 августа 2009, 18:56 [#3]:

Я раньше както делал в RiсhEdit, думаю тут будет не сложнее. Я щас разберусь с WM_MOUSEWHEEL и напишу в ответ.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
Amidamaru

Amidamaru (статус: 4-ый класс), 15 августа 2009, 20:12 [#4]:

Советую почитать help. У WM_MOUSEWHEEL и WM_VSCROLL (WM_HSCROLL) есть ещё немало интересного.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.02 сек.