K
k2536
Unregistered / Unconfirmed
GUEST, unregistred user!
如果一个对象的事件在内部处理了,外部就不能再处理,只有一个函数能处理这种事件,因为DELPHI的事件处理机制是
对象.事件名 = 函数 这样就限制了一个事件只能由一个函数来处理,如果一个事件既要控件内部处理,又要控件外面处理就解决不了了,而C# 采用的是 对象.事件名 += 函数,这样一个事件可以由多个函数同时处理,我就设计就是采用的这种思想,到最后的时候发现DELPHI不支持一个事件的多外处理,这下玩完了,有没有解决的办法?
如例子
type
TmyButton = class(TButton)
private
procedure myclick(sender:TObject);
public
constructor Create(Aowner:TComponent);override;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure myclick2(sender:Tobject);
public
{ Public declarations }
end;
constructor TmyButton.Create(Aowner:TComponent);
begin
inherited create(Aowner);
self.OnClick := self.myclick;
end;
procedure TmyButton.myclick(sender:TObject);
begin
showmessage('aaaaaaaaaaaaaaaaaaa');
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
my:TMyButton;
begin
my := TMyButton.Create(self);
my.Parent := self;
MY.OnClick := self.myclick2;
end;
procedure TFORM1.myclick2(sender:Tobject);
begin
showmessage('bbbbbbbbbbbbbbb');
end;
自定义了一个控件TMyButton 对事件的内部处理是显示aaaaaaaaaaaaa 外面处理是显示bbbbbbbbb, 永远地,不能让 myclick1 和myclick2都执行,我就是这里玩死了,请各位救命哈
对象.事件名 = 函数 这样就限制了一个事件只能由一个函数来处理,如果一个事件既要控件内部处理,又要控件外面处理就解决不了了,而C# 采用的是 对象.事件名 += 函数,这样一个事件可以由多个函数同时处理,我就设计就是采用的这种思想,到最后的时候发现DELPHI不支持一个事件的多外处理,这下玩完了,有没有解决的办法?
如例子
type
TmyButton = class(TButton)
private
procedure myclick(sender:TObject);
public
constructor Create(Aowner:TComponent);override;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure myclick2(sender:Tobject);
public
{ Public declarations }
end;
constructor TmyButton.Create(Aowner:TComponent);
begin
inherited create(Aowner);
self.OnClick := self.myclick;
end;
procedure TmyButton.myclick(sender:TObject);
begin
showmessage('aaaaaaaaaaaaaaaaaaa');
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
my:TMyButton;
begin
my := TMyButton.Create(self);
my.Parent := self;
MY.OnClick := self.myclick2;
end;
procedure TFORM1.myclick2(sender:Tobject);
begin
showmessage('bbbbbbbbbbbbbbb');
end;
自定义了一个控件TMyButton 对事件的内部处理是显示aaaaaaaaaaaaa 外面处理是显示bbbbbbbbb, 永远地,不能让 myclick1 和myclick2都执行,我就是这里玩死了,请各位救命哈