首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于事件的有关问题?多谢

2012-02-15 
关于事件的问题?谢谢!在一个自定义的控件(如下)typeTmyeventprocedure(sender:TObject)ofobjectTmycontr

关于事件的问题?谢谢!
在一个自定义的控件(如下)

    type
    Tmyevent=procedure(sender:TObject)   of   object;
    Tmycontrol=class(TComponent)
      private
        Fonx:TmyEvent;
        procdure   dox();
        ...
    protected
        procedure   x();
    public
      .....
    published
      property   onx:Tmyevent   read   Fonx   write   Fonx;  
      end;
问题:
1.delphi是如何知道onx事件的 "事件调度方法 "是哪一个过程(dox()或x()),是不是根据过程名来识别?还是根据过程体中是否有如下代码:
procedure   ccc();
begin
if   assigned(Fonx)   then   Fonx(self);//  
end;
来识别?
2.onx事件的 "事件调度方法 "是不是必须定义成procedure   而不能是function?
谢谢!



[解决办法]
事件好象只能是procedure不能是函数吧

[解决办法]
跟进。。。
[解决办法]
1、不明白你想问什么,事件由你写的控件内部触发,在什么地方都可以。就好像你写的
if assigned(Fonx) then Fonx(self); ,它会先判断有无指定事件处理函数,有就
执行。
2、可以写义为procedure 或者 function

[解决办法]
好像说得乱七八糟的,呵呵
假如你在Form1使用Tmycontrol MyCtrl:=Tmycontrol;
那么你可以定义onx事件的 "调度方法 ",即一个函数,定义为TForm1的成员或者全局都可以
procedure OnxProc(Sender:TObject); //参数要跟事件的一样
begin
//这里写事件处理代码;
end;

MyCtrl.onx:=OnxProc; //指定事件处理函数
[解决办法]
事件的作用是通知使用者或者在执行的过程中需要外部处理的。
事件的定义跟事件在那触发当然是根据控件具体的功能需要,然后在控件里定义设计好的。
这是控件设计应该负责的工作

热点排行