科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件传递焦点的五种方法

传递焦点的五种方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在编程过程当中,有时我们需要人为地传递焦点到下一个 Control, 目的方便我们或者是用户更好的使用,在大量的数据单元输入或有大量的使用 TEDIT( TDBEDIT ) 控件时更是如此。

作者:吴中卫 来源:yesky 2007年11月1日

关键字: 传递焦点 方法

  • 评论
  • 分享微博
  • 分享邮件
p style="margin: 0">  在编程过程当中,有时我们需要人为地传递焦点到下一个 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 目录,里面有详细的解释。

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章