我的问题(6) (10分)

  • 主题发起人 主题发起人 amer
  • 开始时间 开始时间
A

amer

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TCloseQueryEvent=procedure (Sender:TObject; Var CanClose:Boolean)of Object;

TCloseButton = class(TButton)
private
FOnCloseQuery:TCloseQueryEvent;

procedure TCloseButton.CloseQuery;
begin
if assigned(FOnCloseQuery) then
FOnCloseQuery(self,FCanClose);

加横线的这个句话是什么意思啊?
FOnCloseQuery也不是个过程啊?为什么要这样写啊??
self这里不是Sender:TObject类型吗,用self干什么啊??

请告诉我吧,谢了。。。:)
 
没有人帮我吗?????
 
哎。。。。。。
 
self 在这里可是指代TCloseButton 呀
不过气它的我就不懂了 :)
 
详细的我不知道,我说说它的原理吧:
FOnCloseQuery是一个数据成员,里面的数据是一个事件响应程序--也就是当程序关闭
时会调用的那个对象方法,
procedure TCloseButton.CloseQuery里的代码的意思如下:
先检查FOnCloseQuery是否为空,如果非空,就使用其数据--实际上这是一个指针,指向
一个事件处理程序。所以FOnCloseQuery(self,FCanClose)的意思就是以self和FCanClose
为参数调用事件处理程序,SELF是对象指针,FCANCLOSE是一个常量,告诉程序可以关闭。
仔细观察一下DELPHI帮你生成的程序关闭事件处理程序声明,你会发现参数可以一一对得上
号的。
还有兄弟是不是在研究VCL,有兴趣的话可以一起来啊。我的QQ:80127128
 
还有兄弟,你的分给得少了点:)
 
大哥啊,你就可怜一下把,我新来这里,不知道怎么给分,就把这100分就给出去了啊。。
 
呵呵,现在就有10分。但还要问问题呢。。。哎
 
美关系
只要以后多多回答别人的问题
不就行了
重在参与
 
后退
顶部