DBGrid支持鼠标滚轮滚动的解决办法

方法一:

在窗体添加一个TApplicationEvents组件(在Additional中),然后在它的OnMessage事件中添加如下代码:

 
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // 当在 DBGrid1 上发生鼠标滚轮事件时
  if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then
  begin
    if Msg.wParam > 0   then    // 滚轮上滚
      SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0)   // 向DBGrid1发送 VK_UP按键消息
    else                        // 下滚
      SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0);
    Handled := True;   // 消息已经处理完毕
  end;
end;

 
DBGrid1表示需要响应滚轮事件的DBGrid名,这样就能顺利解决滚轮支持的问题。

 

方法二:

首先在窗体定义前面新写一个类,继承于DBGrids.TDBGrid,添加一个DoMouseWheel的函数,如下:

 
type
  TDBGrid=class(DBGrids.TDBGrid)
  public
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; 
       MousePos: TPoint): Boolean; override;
  end;
  TFormMain = class(TForm)
  //....省略
   end;

var
  FormMain: TFormMain;

implementation

{$R *.dfm}

  //....其他省略

{ TDBGrid }

function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
  MousePos: TPoint): Boolean;
begin
  if WheelDelta < 0 then
    DataSource.DataSet.Next;
  if wheelDelta > 0 then
    DataSource.DataSet.Prior;
end;

end.

 

如此也能解决滚轮问题,但是个人觉得还是前一种方法比较好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值