[DUG] MouseWheel and DBGrid in D6

Wayne Roser rr at kristin.school.nz
Tue May 30 14:47:05 NZST 2006


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



More information about the Delphi mailing list