dbgrid的滚动条对鼠标的滚轮没有用? ( 积分: 20 )

  • 主题发起人 主题发起人 丁堡
  • 开始时间 开始时间

丁堡

Unregistered / Unconfirmed
GUEST, unregistred user!
这问题好久了,不知道大家是不是也这样。
在DBgird中,当数据很多时,会出现滚动条,一般的程序中都可以通过鼠标中间的滚轮来进行上下移动滚动条,从而查看数据。但是在Delphi中编译后的程序,好像就不可以使用滚轮,移动滚轮对数据没有滚动的效果,请问有什么办法解决?
 
难道大家的DBGrid都是没有问题的?
 
再来顶一个
 
不会吧,说清楚点
 
delphi提供的TDBGrid的确不支持滚轮的,用其他第三方组件,或者自己改进一下.
 
你可以用RxDBGrid,是RXLib里面的,,它支持的!
 
自己重新写下消息处理吧,很简单的 (接分 :))
unit Unit1;

interface

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

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ds1: TDataSource;
qry1: TADOQuery;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure NewDBGRIDProc(var message:Tmessage);
public
{ Public declarations }
end;

var
Form1: TForm1;
OldProc : TWndMethod;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.NewDBGRIDProc(var message: Tmessage);
var
isneg:boolean;
begin
if message.msg=wm_mousewheel then
begin
isneg:=short(message.WParamHi)<0;
if isneg then
begin
DBGrid1.DataSource.DataSet.MoveBy(1);
end //if..end;
else
DBGrid1.DataSource.DataSet.MoveBy(-1);
end
else
OldProc(message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := NewDBGRIDProc;
end;
end.
 
用DBGridEh控件
 
谢谢。
关注即有分
今晚回去试试onyliu的答案
 
后退
顶部