分享

在delphi中通过回车键 或者上下键来控制获得焦点的五种方法

 一路狂奔141 2014-05-15

         在编程过程当中,有时我们需要人为地传递焦点到下一个 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 目录,里面有详细的解释。
  在使用以上的方法时,由于都没有考虑到当焦点转移时的数据变更问题,读者在实际运用中应加以注意和
处理。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章