如何引用对象中事件,使它象普通变量一样使用?
已知有一个过程如下:
procedure Test(var q:TNotifyEvent);
begin
q:=xxxx;
end;
var x:TNotifyEvent;
begin
test(x); //这样是合法的
test(Button1.Onclick); //但这是非法的.
end;
也许大家问我为何不使用Button1.Onclick:=xxx;
这是因为我想做一个类,它不但可保存TNotifyEvent的变量,也可保存任意对象的TNotifyEvent属性(属性名可以任意).
这样,就可以在特定情况下把这个TNotifyEvent指向特定的事件.所以有些一问,不知哪位高手能指点一下.
[解决办法]
sf
[解决办法]
先将Button1.Onclick的代码封装成一个方法,然后在OnClick和Test分别调用就可以了。
[解决办法]
var x:TNotifyEvent;
begin
test(x); //这样是合法的
test(Button1.Onclick); //但这是非法的.
end;
=====================================================
var x:TNotifyEvent;
begin
test(x); //这样是合法的
x := Button1.Onclick;
test(x); //这应该合法吧.
end;
[解决办法]
哦,没看清楚,你说的要给Button1.Onclick赋值啊,Button1.Onclick是属性,没法作为var参数赋值的。
[解决办法]
你在类里声明一个事件属性不就得了,属性的类型为TNotifyEvent
就像Button的OnClick事件一样
[解决办法]
设置成属性,你完全可以直接对你的属性赋值
myClass.myEvent := Button.Onclick;
有何不可?