学习中,发现这句:TNotifyEvent = procedure(Sender: TObject) of object;不太明白,什么意思?

解决方案 »

  1.   

    那怎么用呢?
    和平常procedure xxx(...);有什么区别?
      

  2.   

    也不懂
    不过葵花保碘上有这一段
    --------------
    不同于一般的procedure或者function,在Delphi中属于某个类的方法称为method,它们的声明一般为AProcMethod:procedure(Sender:TObject) of object;为什么一定要加上of object呢?实际上,Object Pascal中一般的函数指针就相当于普通的指针,而AProcMethod则是一个对指针,它在Delphi中有一个对应的类型:TMethod。TMethod=record  Data, Code:Pointer;end;所以,我们在单元中可以这样:procedure TForm1.Button1Click2(Sender:TObject);begin  ShowMessage(‘Click2!’);end; procedure TForm1.FormCreate(Sender:TObject);var  Method:TMethod;begin  Method.Data := Self;  Method.Code := MethodAddress(‘Button1Click2’);  Button1.OnClick := TNotifyEvent(Method);end;当然,实际上只需要Button1.OnClick=Button1Click2即可;不过,这样可以让你明白在幕后发生的事情。值得注意的一点是,Button1Click2应该声明在published段(或者和其他构件的声明放在一起,因为默认作用域就是published),以便编译器为它产生RTTI信息,否则程序可能达不到预期的效果。
      

  3.   

    type TNotifyEvent = procedure(Sender: TObject) of object;这个东东,是过程类型,更准确是一个方法类型。
      

  4.   

    同意楼上 psp2003() 观点。
    这种情况只在写控件时定义新的事件时使用。