如何让DbGrid支持鼠标滚轮滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让DbGrid支持鼠标滚轮滚动相关的知识,希望对你有一定的参考价值。

如何让DbGrid支持鼠标滚轮滚动

在主窗体上加一个ApplicationEvents控件(控件在Additional面板中),
在它的OnMessage事件中加入下述代码,一切搞定~!
procedure TFrm_main_usermanager.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var hWnd: THandle; aName: array [0..255] of char;
begin    
    //给DBGrid加上鼠标滚轮    
    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;

并非原创,出自网络

以上是关于如何让DbGrid支持鼠标滚轮滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的猫头鹰旋转木马方向跟随鼠标滚轮方向

delphi6 两个dbgrid如何实现水平滚动条同步滚动?

JS如何判断鼠标滚轮事件分析

jQuery中有鼠标滚轮事件么?

让鼠标滚轮在WINDOWS系统中也和MAC一样滚动(WIN系统鼠标滚轮反向)

父子窗体滚动条支持鼠标滚轮移动