这样回车后自动跳到下一输入框,如果实现?(50分)

  • 主题发起人 主题发起人 pckite
  • 开始时间 开始时间
P

pckite

Unregistered / Unconfirmed
GUEST, unregistred user!
现有edit1和edit2,我想在edit1中输入两位数字后,一回车光标就自动跳到edit2中等待输入
如果实现?
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
IF KEY=#13 then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0); //postmessage(,,,,)
end;
end;
 
在edit1的onkeydown事件中加入
if key = vk_return then
Edit2.setfocus;
 
同意楼上
 
来迟了!!!!
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
IF KEY=#13 then
selectnext(self.ActiveControl ,true,true);
end;
 
可以使用RZEdit系统的控件,它只需设置属性,即可完成你所说的功能,不需要代码。
 
那么请问各路高手,如何在edit1中输入了两个数字之后,不用回车,让光标自动转到edit2?[?][?][?]
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if length (edit1.Text)=2 then edit2.SetFocus ;
end;
 
呵呵!我也贴一个
procedure TloginForm.userEditKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then passwdEdit.SetFocus;
end;
 
如果你的窗体上没有dbgrid 可以用上面的代码,但是你的 窗体如果有dbgrid ,
就不行了,因为焦点在dbgrid 就跳不出来了。
需要用回车键代替TAB键下移一个控件时,
把KeyPress设为True,加入下列代码拦截击键:
Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
Begin
 if key=#13 then { 判断是按执行键}
 if not (ActiveControl is TDbgrid) Then
 Begin { 不是在TDbgrid控件内}
  key:=#0;
  perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
 end else
 if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
 begin
  With TDbgrid(ActiveControl) Do
  if Selectedindex<(FieldCount-1) then

  Selectedindex:=Selectedindex+1{ 移动到下一字段}
  else Selectedindex:=0;
 end;
End;

 
下面是我的一个项目中用到的代码,应该够用了

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Edit1.SelStart>=2 then //如果要写6个字符就改成6好了
ActiveControl:=edit2;
end;
 
谢谢,各路高手![:)]
 
to 人在昆明,还在吗?我照你的方法为什么编译没通过?在第四行以后:
if not (ActiveControl is TDbgrid) Then
编译器都说:illegal character in input file: ' '($A1A1)
什么意思?[:(]
 
把中文空格删除。
 
to jsxjd,果真如此!谢谢了。看来不能偷懒呵![:)]
 
大侠们,我试了,只能在一条记录中移来移去啊,如何移动到下一个记录?
 
编译不同是因为你把这段代码拷贝到你的delphi编译器中,代码中间有一些不可见的
非法字符,呵呵,明白了吧,你把中文注释删除掉,就可以了.
 
我知道了。还有更好的方法,就是在TForm2.DBGrid1KeyPress(Sender: TObject; var Key: Char)过程中
加入如下代码:
if key = #13 then //模拟tab键。
keybd_event( VK_TAB, MapVirtualKey( VK_TAB, 0 ), 0 , 0 );
用回车来模拟tab键。不过如何随心所欲的让某个记录某个字段获得焦点
还是个迷。希望大狭们不吝赐教呵。
 
后退
顶部