一个窗体中有多个EDIT,我在EDIT1的KEYPRESS中加入如下代码,以实现下一个EDIT自动获得焦点。
procedure Tfrxscb.edit1KeyPress(Sender: TObject; var Key: Char);
 begin
     if key=#13  then edit2.SetFocus;
 end;
运行时却不会使EDIT2自动获得焦点,还是要用TAB键,请问是哪错了?

解决方案 »

  1.   

    自动获得是什么意思?
    这句话的功能是按回车键,edit2获得焦点。
      

  2.   

    按了回车后,不会使EDIT2获得焦点
      

  3.   

    嘿嘿.
    我想你应该捕捉键盘消息.
    如果是enter键.
    则获得焦点.
      

  4.   

    这个edit1的容器,或者窗体的KeyPress事件里有代码么?
      

  5.   

    你應該在Form的OnkeyPress事件中寫,你是不是想得到用Enter鍵就可實現Tab鍵的功能啊?
      

  6.   

    是想得到用Enter鍵就可實現Tab鍵的功能,请教
      

  7.   

    窗体的KeyPress事件里没有代码
      

  8.   

    首先你得設好各控件的TabOrder屬性,如:Edit1為0 Edit2為1...
    然后寫上以上代碼就可以了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;
      

  9.   

    你好,你应该这样写就正确了,你试试看。 
    procedure Tfrxscb.edit1KeyPress(Sender: TObject; var Key: Char);
     begin
         if key=chr(13) then edit2.SetFocus;
     end;
      

  10.   

    Form1.KeyPreview := True;procedure Tfrxscb.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #13 then 
        Edit2.SetFocus;//  SelectNext(ActiveControl, True, True);
    end;
      

  11.   

    楼上各位,请不要误导楼主的方法绝对正确,他肯定是在别的一些地方写错了建议把全部代码贴上来
    另外你看一下你的edit2的enter事件里写的是什么