请问:
   在 dbgrid 中 滚动鼠标的中键 为什么里面的内容不跟着动呢,怎么解决?

解决方案 »

  1.   

    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;
      

  2.   

    哈哈,最初工作的时候遇到这个问题,因为dbgrid没有鼠标的那个事件,好像是onwheeldown吧所以后来改用stringgrid了,呵呵。现在不知道其它的第三方dbgrid控件可以实现吗?^_^
      

  3.   

    http://borland.mblogger.cn/jinjazz/posts/21705.aspx
      

  4.   

    在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控件....