dbgrid中的滚动条怎么用鼠标中的滚动条控制?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     SendMessage(RichEdit1.Handle,EM_LINESCROLL, 0, 2); 
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      RichEdit1.Perform(EM_LINESCROLL, 0, 1);  
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      RichEdit1.ScrollBy(0,-1);
    end;这三个过程都可以,SendMessage和Perform的功能一样,都属于消息函数,最后的参数
    表示移动的行数,只能一整行移动,而ScrollBy则不是整行移动,它移动距离比较小,
    我建议你使用ScrollBy,这样做可以些程序更加细腻一些.
    THANK YOU FOR READ MY ANSWER!
      

  2.   

    用mousewheeldown鼠标事件和mousewheelup。
    mousewheeldown往下
    mousewheelup往上
      

  3.   

    TO  grail_(grail_):
    可以麻烦你说的再清楚些吗?
    例如举一段代码的例子?
     ^o^
    先谢谢~~~~~
      

  4.   

    procedure MouseWheelHandler(var Message: TMessage); override;
    以上这句写在tform的published中
    以下这句写在implements中。procedure tform1.MouseWheelHandler(var Message: TMessage);
    begin
      if message.WParam <0 then
      datasource1.DataSet.Next
      else
      datasource1.DataSet.prior;   end;
      

  5.   

    原来mousewheeldown这些鼠标事件是在form下面~~~:)
      

  6.   

    TO   niat97222(Freeman) :
    如果有三个数据源,是这样写吗?if message.WParam < 0 then
    datasource1.dataset.Next
    else
    datasource1.dataset.Prior;
     if message.WParam < 0 then
    datasource2.dataset.Next
    else
    datasource2.dataset.Prior;
    if message.WParam < 0 then
    datasource3.dataset.Next
    else
    datasource3.dataset.Prior;
    end;
      

  7.   

    你是不是用的多个DBGrid连接多个数据源,如果是的话
    那么你换个方式,滚动滚轮就模拟一次按键呢?
    if message.WParam < 0 then
      Keybd_Event(vk_up,0,0,0);
    else
      Keybd_Event(vk_Down,0,0,0);
    如此,则光标在哪个DBGrid上,则你滚动鼠标滚轮的时候哪个DBgrid就会跟着动,而不会所有的DBGrid都跟着动,是否比你那样处理好一些呢