Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как запретить стандартную прокрутку от колеса мыши?


Тфьу ©   (2006-03-24 13:36:00) 

У меня собственный обработчик на колесо мыши. Все компоненты его слушаются, особенно, если им отключить ScrollBar. Но есть такая штука, как DevExpress, которая в cxDBGrid даже при отключенном скролле реагирует на колесо мыши. Перехват WM_MOUSEWHEEL в Application.OnMessage ничего не дал. Хотя мышу перехватывает...

Пример:
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
 if Msg.message = WM_MOUSEWHEEL then
 begin
   if (Msg.wParam=-7864320)or(Msg.wParam=-23592960)or(Msg.wParam=-15728640) then//down
   begin
     ProgressBar1.Position:=ProgressBar1.Position-1;
   end;
   if (Msg.wParam=7864320)or(Msg.wParam=23592960)or(Msg.wParam=15728640) then//up
   begin
     ProgressBar1.Position:=ProgressBar1.Position+1;
   end;
 end
 else
   inherited;
end;


Чародей   (2006-03-24 20:00:00) [1]

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
 i: SmallInt;
begin
 {Mouse wheel behaves strangely with dgbgrids - this proc sorts this out}
 if Msg.message = WM_MOUSEWHEEL then
 begin
   Msg.message := WM_KEYDOWN;
   Msg.lParam := 0;
   i := HiWord(Msg.wParam);
   if i > 0 then
      ProgressBar1.Position:=ProgressBar1.Position+1
     //Msg.wParam := VK_UP
   else
      ProgressBar1.Position:=ProgressBar1.Position-1;
     //Msg.wParam := VK_DOWN;

   Handled := False;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := Form1.AppMessage;
end;

Если надо чтоб колесо воздействовало на BDGride, открой коментарии.


Наверх

Титульная страница Поиск, карта сайта Написать письмо