delphi DBgrid 数据随着鼠标滚动而滚动!

首先要在窗体放一个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;

猜你喜欢

转载自blog.csdn.net/ttpage/article/details/9161753
今日推荐