关于事件的问题?谢谢!
在一个自定义的控件(如下)
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; //指定事件处理函数
[解决办法]
事件的作用是通知使用者或者在执行的过程中需要外部处理的。
事件的定义跟事件在那触发当然是根据控件具体的功能需要,然后在控件里定义设计好的。
这是控件设计应该负责的工作