如何获取TDBGRIDEH的垂直滚动条事件? ( 积分: 50 )

  • 主题发起人 主题发起人 strgold
  • 开始时间 开始时间
S

strgold

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下面的方式赋值出错[:(]
DBGrideh1.VertScrollBar.ExtScrollBar.OnScroll = myOnScroll;
这样也出错[:(!]:
DBGrideh1.VertScrollBar.ExtScrollBar.OnScroll = nil;

另外,似乎没有滚轮事件?
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, GridsEh, DBGridEh;

type
TMyGrid=class(TDBGridEh)
procedure OnMouseWheel(var Message: TWMMOUSEWHEEL); message WM_MOUSEWHEEL;
end;
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
DBGridEh1: TMyGrid;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
{ TMyGrid }

procedure TMyGrid.OnMouseWheel(var Message: TWMMOUSEWHEEL);
begin
if Message.Msg = WM_MouseWheel then
begin
if Message.WheelDelta > 0 then
begin
if Focused then
begin
showmessage('鼠标上滚');
end;
end
else
begin
if Focused then
begin
showmessage('鼠标下滚');
end;
end;
inherited;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DBGridEh1:= TMyGrid.Create(self);
DBGridEh1.Parent:=self;
DBGridEh1.DataSource:=DataSource1;
DBGridEh1.Align:=alclient;
end;

end.
 
在TDBGRIDEH控件不支持此事件的情况下,扩展此控件倒不失为一种解决方法,但此方法的缺点是,需要把以前的创建的DBGRIDEH一一替换。代码可以批量替换,但界面上生成的表格,在DELPHI中,是需要删除重建,工作量太大。此方法适合于新功能新项目。
 
不用!建立个这样的组件,把你以前用的DBGridEh组件的类名一换就可以了;
不用换控件;
 
估计也没有更好的办法了,谢谢!
 
后退
顶部