在类中自定义事件

自定义事件定义的方法和定义属性差不多,只是类型时TNotifyEvent。
  TNotifyEvent是默认事件,其定义为:
  TNotifyEvent 
= procedure(Sender: TObject)

示例一(仅列出相当代码):

type
  TParent
=class(TObject)
  private
    FTimeOut:TNotifyEvent;
//事件的方法指针
  protected
    
procedure DoTimeOut;dynamic; //调度方法,用于关联事件。
  
public
    
published
    property OnTimeOut:TNotifyEvent 
read FTimeOut write FTimeOut;
    property OnClick;
    property OnDblClick;
end;

implementation

//事件调度函数,将外部的事件处理函数和该类的事件方法指针联系起来

procedure TTimeCount.DoTimeOut;
begin
  
if Assigned(FTimeOut) then
     FTimeOut(Self);
end;

end;




示例二(仅列出相当代码):

  TwfcNode 
= class (TwfcShape)
  private
    FOnClick: TNotifyEvent;
    
procedure SetOnClick(const Value: TNotifyEvent);
  
public 
    property OnClick: TNotifyEvent 
read FOnClick write SetOnClick;
      
  
end;
      
  
procedure TwfcNode.SetOnClick(const Value: TNotifyEvent);
  
begin
    fOnClick :
= Value;
  
end;

 

触发多带一些参数的事件

定义事件

type 
  TGetPacketEvent=procedure(Sender:TObject;strPacket:string)of object;
//当socket收到数据包所触发的事件hyc20071210

protected
  pktstr:string;
  FOnGetPacket:TGetPacketEvent;

public

  property OnGetPacket: TGetPacketEvent read FOnGetPacket write FOnGetPacket;

触发事件

procedure TNetClt.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
 iPos:integer;
 SubMsg_,Msg_:String;
begin
  Msg_:=Socket.ReceiveText;
  pktstr:=Msg_;//传出包内容到事件
  if assigned(FOnGetPacket) and (Trim(pktstr)<>'') then
    FOnGetPacket(self,pktstr);
end;

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值