请大家讲下TNotifyEvent的用法,要有例子,另外帮我看下我下面的代码错在哪里
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure dosomething(Sender: TObject);
end;
tmyclass=class
public
OnChange:TNotifyEvent;
end;
var
Form1: TForm1;
my:tmyclass;
implementation
{$R *.dfm}
{ TForm1 }procedure TForm1.dosomething(Sender: TObject);
begin
edit1.Text:='xiexie';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
my.OnChange:=self.dosomething;
end;
end.
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure dosomething(Sender: TObject);
end;
tmyclass=class
public
OnChange:TNotifyEvent;
end;
var
Form1: TForm1;
my:tmyclass;
implementation
{$R *.dfm}
{ TForm1 }procedure TForm1.dosomething(Sender: TObject);
begin
edit1.Text:='xiexie';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
my.OnChange:=self.dosomething;
end;
end.
这种事件,一般是属性,放到 published 里面。过程指针来处理的。
my被初始化为nil,当然你不能给它赋值了。
你应该在使用它之前先创建它。
my:= TMyClass.Create;
my.OnChange:= Button1Click; {或 dosomething}TButton的OnClick就是TNotifyEvent事件类型,你可以在代码中给TButton的OnClick事件赋值,如,
Button1.OnClick:= Button1Click;
只要赋值的例程原型符合 Procedure(Sender: TObject)的形式就行了。明白了么?