打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DELPHI的DBGrid 支持鼠标滚动

DELPHI的DBGrid 支持鼠标滚动

时间:2011-5-31来源:yang 作者: peng点击: 32次

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, Grids, DBGrids;

type
   TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
  private
   Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
//------------------------------------------------------------------------------
Procedure TForm1.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
  if Msg.message = WM_MouseWheel then
  begin
    if Msg.wParam > 0 then
     begin
       if DBGrid1.Focused then
         SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
     end
    else
     begin
       if DBGrid1.Focused then
         SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
     end;
    Handled:= True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnMessage:=OnMouseWheel; // 截获鼠标滚动事件
end;

unit DBGrid3D;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Grids, DBGrids;

type
  TDBGrid3D = class(TDBGrid)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
    { Published declarations }
  end;

procedure Register;

implementation


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

procedure Register;
begin
  RegisterComponents(‘Samples‘, [TDBGrid3D]);
end;

end.

你只要将一个TApplication 控件放到窗体上
procedure
Application1.OnMessage
(var Msg: TMsg; var Handled: Boolean) ;
var
i: SmallInt;
begin
  if Msg.message = WM_MOUSEWHEEL then
  begin
    Msg.message := WM_KEYDOWN;
    Msg.lParam := 0;
    i := HiWord(Msg.wParam) ;
    if i > 0 then
    Msg.wParam := VK_UP
    else
    Msg.wParam := VK_DOWN;
    
    Handled := False;
  end;
end;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Delphi自动检测U盘插入
DelPhi2007 中 使用Indy 的TCP连接教程
WebBrowser组件和MSHTML 在Delphi中的使用
Delphi小技巧杂记
delphi添加任务栏右键菜单
Delphi TObject消息的分发DisPatch和接受DefaultHandler
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服