传递焦点的五种方法

 传递焦点的五种方法
--------------------------------------------------------------------------------

  在编程过程当中,有时我们需要人为地传递焦点到下一个 Control, 目的方便我们或者是用户更好的使用

,在大量的数据单元输入或有大量的使用 TEDIT( TDBEDIT ) 控件时更是如此。笔者就日常使用的一些方法总

结出来,以荀读者。

  从简单的开始,使用消息传递机制:

  1、把焦点传递到下一 Control: SendMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0);

  2、把焦点传递到上一 Control: SendMessage(Handle, WM_NEXTDLGCTL, 1, 0);
这种方法的好处是无需考虑 Control 的数量、位置及 TabOrder 的顺序。

 

  使用 Delphi 的内部函数 A:

  1、把焦点传递到下一 Control: SelectNext((Sender AS TWinControl),true,false);


  2、把焦点传递到上一 Control: SelectNext((Sender AS TWinControl),false,false);
这种方法的缺点是需考虑 TabOrder 的顺序。

 

  使用 Delphi 的内部函数 B:

  1、把焦点传递到下一 Control: FocusControl(FindNextControl((Sender AS 

TWinControl),True,False,false));


2、把焦点传递到上一 Control: FocusControl(FindNextControl((Sender AS 

TWinControl),False,False,false));
这种方法的缺点是需考虑 TabOrder 的顺序。

 

  使用 Delphi 的内部函数 C:

  1、把焦点传递到下一 Control: (FindNextControl((Sender AS TWinControl),True,False,false) 

As TWinControl).SetFocus;

  2、把焦点传递到上一 Control: (FindNextControl((Sender AS TWinControl),False,False,false) 

As TWinControl).SetFocus;

  这种方法的缺点是需考虑 TabOrder 的顺序。

 

  模拟 Virual Basic 的 SendKey 事件,建立一个 SendKey 方法,有兴趣的读者可以参考 Delphi 5 CD 

光碟的Info\Sendkey 目录,里面有详细的解释。

  在使用以上的方法时,由于都没有考虑到当焦点转移时的数据变更问题,读者在实际运用中应加以注意和

处理。

转载于:https://www.cnblogs.com/yl20021205/archive/2012/10/22/2733597.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值