发信人: wellknow(Dili) 
整理人: teleme(2001-02-25 22:50:05), 站内信件
 | 
 
 
【 在 wellknow 的大作中提到:】
 :我想用于用上下左右键来快捷定位光标位置,谢谢!
 :......
 我自己找到了:
 
  传递焦点的五种方法
 --------------------------------------------------------------------------------
 
   在编程过程当中,有时我们需要人为地传递焦点到下一个 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 目录,里面有详细的解释。
 
   在使用以上的方法时,由于都没有考虑到当焦点转移时的数据变更问题,读者在实际运用中应加以注意和
 
 处理。
 
 
  ---- Senders Software Studio(3S)
 OICQ:376252 | 
 
 
 |