I found an article in Delphi.about.com and got this code to fix MouseWheel 
behaviour in a DBGrid:

procedure TForm1.ApplicationEvents1Message (var Msg: TMsg; var Handled: 
Boolean) ;
var
   i: SmallInt;
begin
   if Msg.message = WM_MOUSEWHEEL then  begin
     Msg.message := WM_KEYDOWN;
     Msg.lParam := 0;
     i := HiWord(Msg.wParam) ; //  this line gives me a problem
     if i > 0 then 
       Msg.wParam := VK_UP
     else
       Msg.wParam := VK_DOWN;
     Handled := False;
   end;
end;

So I dropped a TApplicationEvents component on my form and used the code.

I get a problem at the line 
         i := HiWord(Msg.wParam) ;
Msg.wParam is -7864320 and an ERangeError pops up with message 'Range check 
error'

My working version has 
            i := Msg.wParam div abs(Msg.wParam);
in place of the offending line but I'd like to know wassup with the original 
code. 

Wayne Roser

_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to