首先要在窗体放一个ApplicationEvents控件,在onApplicationEvents 事件中加入以下代码(第一法:只对指定名的控制起作用,第二个对类起作用)
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;
————————————————————————————————————————————————————————
方法二:
//给DBGrid加上鼠标滚轮
var hWnd: THandle; aName: array [0..255] of char;
begin
if Msg.message <> WM_MOUSEWHEEL then exit;
hWnd := WindowFromPoint(msg.pt);
if boolean(GetClassName(hWnd, aName, 256))and(aName='TDBGrid') then//如果第三方控件需要修改,比如用aName='TbsSkinDBGrid'
begin
if Short(HIWORD(Msg.wParam)) < 0 then
begin
PostMessage(hWnd, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(hWnd, WM_KEYUP, VK_DOWN, 0)
end
else
begin
PostMessage(hWnd, WM_KEYDOWN, VK_UP, 0);
PostMessage(hWnd, WM_KEYUP, VK_UP, 0);
end;
Handled := true;
end;
end;