已知有一个过程如下:
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指向特定的事件.所以有些一问,不知哪位高手能指点一下.

解决方案 »

  1.   

    先将Button1.Onclick的代码封装成一个方法,然后在OnClick和Test分别调用就可以了。
      

  2.   

    var   x:TNotifyEvent; 
    begin 
        test(x);       //这样是合法的 
        test(Button1.Onclick);     //但这是非法的. 
    end;
    =====================================================
    var   x:TNotifyEvent; 
    begin 
        test(x);       //这样是合法的 
        x := Button1.Onclick;
        test(x);     //这应该合法吧. 
    end;
      

  3.   

    哦,没看清楚,你说的要给Button1.Onclick赋值啊,Button1.Onclick是属性,没法作为var参数赋值的。
      

  4.   

    你在类里声明一个事件属性不就得了,属性的类型为TNotifyEvent
    就像Button的OnClick事件一样
      

  5.   

    不行的,我要引用某对象的某TNotifyEvent属性,它当然不是我设计的类的成员...
      

  6.   

    设置成属性,你完全可以直接对你的属性赋值
    myClass.myEvent := Button.Onclick;
    有何不可?