在一个自定义的控件(如下) 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?
谢谢!
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?
谢谢!
解决方案 »
- 关于TLMPack V0.14多国语言包注册的问题
- 请问如何判断TCPExecute里面传来的是HTTP命令,TCP监听:17700端口,比如地址栏访问127.0.0.1:17700,那么在TCPExecute里面如何判断是HTTP的访问呢?
- OCX数字证书问题
- 如何关闭除自身以外的所有运行中的程序
- 在线等解答 关于一个小流程的问题
- 要刷新另一个窗口的dbgrid的内容,怎么办?
- 请问有delphi for mac吗?
- 如何在程序中用代码连接ms server 呢?
- 请教大家一个object pascal问题!!!
- 急!急!急!大送分!一个关于SQL运用的极菜问题!
- edit获取字符出错
- 在windows界面下访问dos,并返回结果?(在线等)
if assigned(Fonx) then Fonx(self); ,它会先判断有无指定事件处理函数,有就
执行。
2、可以写义为procedure 或者 function
to HsWong() ( ) 信誉:100
据资料上记载:
"当事件发生时,delphi并不是直接掉用组件使用者建立的事件句柄而是先调用事件调度方法去处理事件,由事件调度方法检查组件使用者是否建立了事件句柄如有就掉用这个句柄"所以(我认为:每个事件句柄都应有相应的"事件调度方法")在开发自定义组件时应该定义事件调度方法,我想问的自定义组件的"事件调度方法"应该如何写?
假如你在Form1使用Tmycontrol MyCtrl:=Tmycontrol;
那么你可以定义onx事件的"调度方法",即一个函数,定义为TForm1的成员或者全局都可以
procedure OnxProc(Sender:TObject); //参数要跟事件的一样
begin
//这里写事件处理代码;
end;MyCtrl.onx:=OnxProc; //指定事件处理函数
你的意思是不是说"调度方法"应该在使用自定义控件时来定义,而不是在开发自定义控件时来定义?
谢谢!
明白啦!谢谢.