怎样截获DBgrid水平滚动条的事件?(想在上面加一个印章) (50分)

  • 主题发起人 主题发起人 视觉音乐
  • 开始时间 开始时间

视觉音乐

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样截获水平滚动条的事件?
我用DBgrid的时候,想截获水平滚动条的事件,是不是需要用Windows的消息啊?
怎么用?
请指点!
 
原因:
我想在上面盖一个图章,窗口变化是总是位于右下方。
现在的问题是,左右移动时,会出来一串图章,需要刷新一下就可以了。
上下移动时好解决。
 
unit Unit1;

interface

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

type
TMyDbGrid = class(TDBGrid)
public
procedure OnScroll(var Msg: TMessage); message WM_HSCROLL;
end;

TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
DBGrid1: TDBGrid;
{ Public declarations }
end;

var
Form1 : TForm1;

implementation

{$R *.DFM}

{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
DBGrid1 := TMyDbGrid.Create(Self);
DBGrid1.Parent := Form1;
DBGrid1.Left := 10;
DBGrid1.Top := 20;
for i := 0 to 10 do
DbGrid1.Columns.Add;
end;

{ TMyDbGrid }

procedure TMyDbGrid.OnScroll(var Msg: TMessage);
begin
inherited;
ShowMessage('OK');
end;

end.
 
to svw0506:
多谢!你的意思我知道,但是OnScroll只是竖直滚动条移动的时候才发生的。
而DBgrod的水平滚动条移动的时,是不会发生的。
你可以做一个看看。这个方法我早就试过了。

 
为什么没有人肯发言啊??
 
唉,我自己提了n次了,为什么没人回复啊?
 
有消息控制的,发消息让它滚动。

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

const

PageDelta = 10;

begin
With VertScrollbar do
if Key = VK_NEXT then
Position := Position + PageDelta
else if Key = VK_PRIOR then
Position := Position - PageDelta;
end;
 
全是屁话
如果你想知道问题的答案,可以找我了!
 
to b2sun:
呵呵,老兄好有意思,愿听高论!
 
我写的就是水平滚动了(WM_HSCROLL),我已经测试通过了,你再试试
 
多人接受答案了。
 
后退
顶部