procedure Tuser.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0) else SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; end;end;
在Additional页中取一个AppicationEvents控件放到form中下面的代码就可以让这个form中的任意一个DBGrid在获得焦点时可用鼠标滚动procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var i: integer; begin for i:=ComponentCount-1 downto 0 do if ((Components[i] is TDBGrid) and (Components[i] as TDBGrid).Focused) and (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam >0 then SendMessage((Components[i] as TDBGrid).Handle,WM_KEYDOWN,VK_UP,0) else SendMessage((Components[i] as TDBGrid).Handle,WM_KEYDOWN,VK_DOWN,0); Handled:=True; end; end;或者直接用DBGridEH控件....
var Handled: Boolean);
begin
if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then
begin
if Msg.wParam > 0 then
SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0)
else
SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0);
Handled := True;
end;end;
var Handled: Boolean);
var
i: integer;
begin
for i:=ComponentCount-1 downto 0 do
if ((Components[i] is TDBGrid) and (Components[i] as TDBGrid).Focused) and (Msg.message = WM_MOUSEWHEEL) then
begin
if Msg.wParam >0 then
SendMessage((Components[i] as TDBGrid).Handle,WM_KEYDOWN,VK_UP,0)
else
SendMessage((Components[i] as TDBGrid).Handle,WM_KEYDOWN,VK_DOWN,0);
Handled:=True;
end;
end;或者直接用DBGridEH控件....