我是靠谱客的博主 现实巨人,最近开发中收集的这篇文章主要介绍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.

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

 

转载于:https://www.cnblogs.com/tangqs/archive/2012/05/11/2496801.html

最后

以上就是现实巨人为你收集整理的DBGrid支持鼠标滚轮滚动的解决办法的全部内容,希望文章能够帮你解决DBGrid支持鼠标滚轮滚动的解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部