传递焦点的五种方法

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

在编程过程当中,有时我们需要人为地传递焦点到下一个 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 目录,里面有具体的解释。

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航