zoukankan      html  css  js  c++  java
  • 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.

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

     
  • 相关阅读:
    Spark集群搭建步骤
    Hadoop集群搭建步骤
    Linux上传与下载(sz-rz)
    Spark文档
    Hadoop基本命令详解
    lzo压缩格式文件查看
    hadoop端口配置指南
    eclipse无法连接到makertplace
    Socket 服务端使用多线程实现多客户端通讯实例
    Jenkins和Sonar集成
  • 原文地址:https://www.cnblogs.com/tangqs/p/2496801.html
Copyright © 2011-2022 走看看