delphi的sender用法

比如整个界面frmAA的Keypress控制录入edit框(edtCon)内容必须为数字.此函数已经控制好IsNum


procedure TfrmAAA.FormKeyPress(Sender: TObject; var Key: Char);
begin
   方法一:

   if (Not isNum(Key)) and  (Sender as Tedit).name=edtCon.name then

       key:=#13;

  方法二:

   if (Not isNum(Key)) and  Tedit(Sender).name=edtCon.name then

       key:=#13;

  方法三:

   if (Not isNum(Key)) and  activecontrol.name=edtCon.name  then

       key:=#13;


end;


结果:

方法一直接报错

方法二获取到Tedit(Sender).name的值为frmAA,即理解为KeyPress事件所在的控件,不合适

方法三正确,这里我们利用了窗体的ActiveControl属性,它代表当前获得焦点的输入文本框

 另外,ComponentIndex属性代表了窗体控件放置的次序


///

Sender举个例子
有两个button,共用一个onclick过程,当用户按下某个button时,sender就是用户按下的那个button,或者,这个过程并不是一个可触发事件的过程,只是一般过程,那么在其它地方调用这个过程的时候必需指定sender的名称,在这个过程里就可以引用这个名称了,sender一般为tobject,如果你知道这个sender应该是什么类的,在引用时加个强制类转换就行了,比如前面的button,你可以引用为tbutton(sender),这里你再按小数点就能提示出tbutton应该有的东西了

 

/

 

 

建立窗体是经常要用到他们如:
form1:=tform . create(application);
form1:=tform . create(self);
form1:=tform . create( nil );
  
form1:=tform . create(application); 当应用程序关闭时form1会被释放
form1:=tform . create(self); 当前窗体释放时form1会被释放
form1:=tform . create( nil ); 需要自己动手释放,没人会为你代劳
  
Form1 := TForm . Create(Arg);
其中的Arg代表的是Form的Owner,也就是拥有者。
什么叫拥有者呢,意思就是说当这个拥有者释放的时候,Form1也会释放。
  
{************************************************************************************************************************}
在事件处理程序参数表中,至少含有一个参数Sender,它代表触发事件处理程序的构件,如在上例中,Sender就指Button2,有了Sender参数,可以使多个构件共用相同的事件处理程序,如下例: 
Procedure Tform1 . Buttonclick(Sender:Tobject); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值