Вниз
Скачать: CL | DM;

Как наиболее изящно отловить WM_MOUSEWHEEL?   Найти похожие ветки 

 
Курдль ©   (2005-09-20 13:17) [0]

Приветствую аборигенов и гостей форума!

Необходимо заставить Control ("TCntlGrid") скроллироваться прокруткой мышиного колеса. Как это наиболее изящно исполнить?

С уважением, Я.


 
Leonid Troyanovsky ©   (2005-09-20 14:13) [1]


> Курдль ©   (20.09.05 13:17)  

> Необходимо заставить Control ("TCntlGrid") скроллироваться
> прокруткой мышиного колеса. Как это наиболее изящно исполнить?



 By Peter Below


procedure TForm1.GridMouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
const
 codes: array [Boolean] of Cardinal = (VK_UP, VK_DOWN);
var
 code: Cardinal;
begin
 Handled := true;
 code := codes[WheelDelta < 0];
 (sender as TWincontrol).Perform( WM_KEYDOWN, code, 0 );
 (sender as TWincontrol).Perform( WM_KEYUP, code, 0 );
end;

type
 TGridCracker = class(TDBCtrlGrid);

procedure TForm1.FormCreate(Sender: TObject);
begin
 TGridCracker(DBCtrlGrid1).OnMouseWheel := GridMousewheel;
end;


--
Regards, LVT.


 
Курдль ©   (2005-09-20 17:19) [2]

Спасибо! Нашел еще способ - при помощи TApplicationEvents


procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
 i: SmallInt;
begin
 inherited;
 if Msg.message = WM_MOUSEWHEEL then
 begin
   Msg.message := WM_KEYDOWN;
   Msg.lParam := 0;
   i := HiWord(Msg.wParam) ;
   if i > 0 then
     Msg.wParam := VK_UP
   else
     Msg.wParam := VK_DOWN;

   Handled := False;
 end;
end;



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
14-1126880071
rOOse
2005-09-16 18:14
2005.10.09
Часы


2-1125536397
Angel123
2005-09-01 04:59
2005.10.09
Кому не трудно, помогите с кодом


3-1124973063
Max Zyuzin
2005-08-25 16:31
2005.10.09
Помогите оптимизировать SQL- запросик


8-1116731635
Antonn
2005-05-22 07:13
2005.10.09
Использование GDI+


2-1124826479
Агат
2005-08-23 23:47
2005.10.09
Работа с текстовым файлом




   Наверх