如题

解决方案 »

  1.   

    在OnMouseWheel事件中移动记录指针。
      

  2.   

    dbGrid 中没有OnMouseWheel事件,只能从Richedit类似的控件中inherited了!
    然后再调用此事件!
      

  3.   

    如果你们不养成搜索以前贴子的习惯,我估计我平均一个月就要在这个问题上得点分。
    重载以下这个函数
     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;
      

  4.   

    为什么我觉得没有这么复杂?我试了一下,使用滚轮鼠标可以直接在dbgrid中上下移动光标。
      

  5.   

    to ahuige(灰不遛秋):不是我不搜索以前的帖子,而是搜索不了,经常出现超时的错误,而且只能搜索几次,以后都是什么"服务器3"之类的错误提示。你的方法我会试试的,谢谢。to media2(),我的不行,指针没有移动,dbgrid的滚动条更不会滚动。我用的是D6,不知你用的是D几?
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, DB, DBTables;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        Button2: TButton;
        DBGrid1: TDBGrid;
        Table1: TTable;
        DataSource1: TDataSource;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure MyMouseWheel(var msg: TMsg;var Handled: Boolean);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MyMouseWheel(var msg: TMsg;var Handled: Boolean);
    begin
         if msg.message = wm_mousewheel then
         begin
            if msg.wParam < 0 then
                Table1.Next
            else
                Table1.Prior;
         end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
        Application.OnMessage := MyMouseWheel;
    end;end.不是太完美,你自己修改一下