同题。

解决方案 »

  1.   

    拦截WM_MOUSEWHEEL
    SendMessage(DBGrid.Handle,WM_VSCROLL,SB_LINEDOWN,0)
    SendMessage(DBGrid.Handle,WM_VSCROLL,SB_LINEUP,0)查看procedure TControl.WMMouseWheel(var Message: TWMMouseWheel);其实从TControl派生的控件时都有,DBGrid没继承而已!
      

  2.   

    ehom(?!) ( ) 
    怎样拦截呢,我也不知道代码该写那里;
    请告之。
      

  3.   

    3种方法:1:继承生成新类,直接继承!2:Application.OnMessage:=ApplicationMessage;procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    begin
      if (Msg.message = WM_MOUSEWHEEL) and (Msg.hwnd = DBGrid1.Handle) then
      begin
        //处理程序
      end
      else
        inherited;
    end;3:窗体子类化
    function SubClassWndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM):LResult;stdcall;
    begin
    if Msg = WM_MOUSEWHEEL then
    begin
      //处理程序
      Result := 0;
    end
    else
    begin
      Result := CallWindowProc(Pointer(i),Form1.Button1.handle,Msg,WParam,LParam);
    end;
    end;i:=GetWindowLong(Button1.Handle,GWL_WNDPROC);
    SetWindowLong(Button1.Handle,GWL_WNDPROC,Longint(@SubClassWndProc));SetWindowLong(Handle,GWL_WNDPROC,LongInt(Pointer(i)));//恢复至于向上还是向下,判断Msg.wParam
      

  4.   

    ehom(?!) 
    第一种,我已经解决了,但麻烦,
    第二种,第三中,不大明白,
    Application.OnMessage:=ApplicationMessage;
    if (Msg.message = WM_MOUSEWHEEL) and (Msg.hwnd = DBGrid1.Handle) 
    这两句话有问题吧,其实我的要求是 当DBgrid 获得焦点是,滚动鼠标的轮子,
    dBgrid 中的记录也上下滚动,
      

  5.   

    ehom(?!) 小弟对delphi 中的消息机制不怎么熟,告示我具体怎么做,谢谢
      

  6.   

    Application.OnMessage:=ApplicationMessage;
    将程序的所有消息将给过程ApplicationMessage处理!定义过程
    procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    begin
      if (Msg.message = WM_MOUSEWHEEL) and (Msg.hwnd = DBGrid1.Handle) then//当接收到消息WM_MOUSEWHEEL,并且由DBGrid1激发时
      begin
        //处理程序
      end
      else
        inherited;
    end;窗体子类化可查看我以前回答的一个问题!
    http://expert.csdn.net/Expert/topic/1213/1213227.xml
      

  7.   

    像 http://expert.csdn.net/Expert/topic/1213/1213227.xml 这样
    给我一个列子好吗。?我能理解你的意思,但 哎,太菜了。拜托了!
    而且,当应用程序中有多个DBGrid时,这怎么做呢?