怎样给动态创建的控件添加处理事件?(50分)

  • 主题发起人 主题发起人 迈克老狼
  • 开始时间 开始时间

迈克老狼

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中,动态的创建了一个TADOQuery,如何给他的afterscroll事件添加一个处理程序呢?
请高手指点。。。
 
Txxx= class(TForm)

private
procedure ADOQueryAfterscroll(....);
end;

ADOQuery.Afterscroll = ADOQueryAfterscroll;
 
老问题,自己写一个和其参数相同的函数,动态生成时赋值就可以了。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
img: TImage;
procedure MyImageMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
img := TImage.Create(self);
img.Parent := Form1;
img.Left := 10;
img.Top := 10;
img.OnMouseMove := MyImageMouseMove;
end;

procedure TForm1.MyImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ShowMessage('move');
end;

end.
 
呵呵,先在一个类(通常是窗体类或者数据模块类)中写一个参数和AfterScroll事件参数一样的方法,
然后,在AdoQuery创建后,将该方法名赋值给AdoQuery的AfterScroll事件即可。
 
写一个过程与afterscroll事件的参数一致的,
然后在创建TAdoQuery后,把这个过程赋值给动态创建的控件的OnAfterScroll
 
procedure TForm1.Button1Click(Sender: TObject);
var
ADOQuery: TADOQuery;
begin
ADOQuery := TADOQuery.Create(Self);
try
ADOQuery.Connection := ADOConnection1;
ADOQuery.AfterScroll := DataSetAfterScroll;
ADOQuery.SQL.Text := 'select * from goods';
ADOQuery.Open;
DataSource1.DataSet := ADOQuery;
ShowMessage('单击后马上关闭数据集');
finally
ADOQuery.Free;
end;
end;

procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
begin

end;
 
多人接受答案了。
 
后退
顶部