传递焦点的五种方法

来源:互联网 发布:多线程并发编程问题 编辑:程序博客网 时间:2024/06/05 15:58

  在编程过程当中,有时我们需要人为地传递焦点到下一个 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 的顺序。
0 0
原创粉丝点击