小弟刚接触delphi不久,现想编制组件,但看了书上的一段示例代码后,有些地方不太明白,请各位赐教!谢谢!
……
type
TTimeEvent = procedure (times:integer) of object;
TMyTimer = class(TComponent)
private
FTimer:TTimer;
FOnTimer:TTimeEvent;
FTimes:integer;
procedure FOnTime(Sender:Tobject);
protected
public
constructor create(AOwner:TComponent);override;
destructor destroy;override;
procedure start;
published
property OnSecond :TTimeEvent read FOnTimer write FOnTimer;
end;
constructor TMyTimer.create(AOwner:TComponent);
begin
inherited;
if not (csdesigining in ComponentState) then
begin
FTimer := TTimer.create(nil);
Ftime.interval := 1000;
Ftimer.OnTimer:= FOnTimer;
end;
end;destructor TMytimer.destroy;
begin
FTimer.free;
inherited;
end;procedure TMytimer.FOnTimer(Sender:Tobject);
begin
inc(FTimers);
if assigned(OnSecond) then
OnSecond(FTimes);
end;procedure TMytimer.Start;
being
FTimes:=0;
FTimer.enable := true;
end;
我的问题是在delphi中是怎样把自定义事件关联起来的?可能我的理解有误,上述代码中FOnTime(Sender:Tobject)定义的是什么?应该怎样理解TTimerEvent?为什么会有OnSecond(FTimes);这名代码出现?应怎样理解?对不起,小弟刚学delphi,不太熟悉,但有个活特急,分不多,见谅!!
……
type
TTimeEvent = procedure (times:integer) of object;
TMyTimer = class(TComponent)
private
FTimer:TTimer;
FOnTimer:TTimeEvent;
FTimes:integer;
procedure FOnTime(Sender:Tobject);
protected
public
constructor create(AOwner:TComponent);override;
destructor destroy;override;
procedure start;
published
property OnSecond :TTimeEvent read FOnTimer write FOnTimer;
end;
constructor TMyTimer.create(AOwner:TComponent);
begin
inherited;
if not (csdesigining in ComponentState) then
begin
FTimer := TTimer.create(nil);
Ftime.interval := 1000;
Ftimer.OnTimer:= FOnTimer;
end;
end;destructor TMytimer.destroy;
begin
FTimer.free;
inherited;
end;procedure TMytimer.FOnTimer(Sender:Tobject);
begin
inc(FTimers);
if assigned(OnSecond) then
OnSecond(FTimes);
end;procedure TMytimer.Start;
being
FTimes:=0;
FTimer.enable := true;
end;
我的问题是在delphi中是怎样把自定义事件关联起来的?可能我的理解有误,上述代码中FOnTime(Sender:Tobject)定义的是什么?应该怎样理解TTimerEvent?为什么会有OnSecond(FTimes);这名代码出现?应怎样理解?对不起,小弟刚学delphi,不太熟悉,但有个活特急,分不多,见谅!!
就是一个private 类的过程
TTimeEvent = procedure (times:integer) of object;
//可以理解成一个过程对象的
published(公开)
property OnSecond :TTimeEvent read FOnTimer write FOnTimer;
这是一个公开属性的定义,一个组件自然该有属性,属性有公开和私有的分别,公开的,当该单元被调用,就可以访问,至于它的可读,可写,你看后面,就知道的,私有的只有在过程内有用的,也就是指他的作用范围