form上有edit1和edit2,在edit1中敲入回车,如何让输入焦点转移到edit2中?除了用
edit2.focus,有没有别的方法?(在edit1的OnKeyPress中写代码吧)

解决方案 »

  1.   

    Perform(WM_NEXTDLGCTL, 1, 0);
      

  2.   

    PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
    焦点失去,转到下一个!
      

  3.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Not(Key in [#8,#13,'0'..'9','a'..'f']) then
         Key :=#0   //输入值的验证
        else  
           if  (Key = #13) Or((Key<>#8) and (Length(Edit1.Text) = 3))  then
               PostMessage(Handle,WM_KEYDOWN, VK_TAB, 0);end;
    超过四个字符跳出
      

  4.   

    Perform(WM_NEXTDLGCTL, 1, 0);
    设定edit的taborder
      

  5.   

    procedure TNFM0000.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key<>VK_RETURN then Exit;
      if ActiveControl=nil then Exit;
      if (ActiveControl.ClassName='TMemo') or (ActiveControl.ClassName='TwwDBRichEdit')
         or (ActiveControl.ClassName='TDBMemo') then exit;
      PostMessage(TWinControl(ActiveControl).Handle,WM_KeyDown,VK_Tab,0);
    end;