如果有三个edit控件,其taborder属性分别为0,1,2
初始时,焦点在edit1上。如何实现按enter键后,焦点顺序下移的问题。谢谢了。

解决方案 »

  1.   

    需要用回车键代替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; 
      

  2.   

    procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    CASE KEY OF
    vk_return:key:=vk_tab;
      

  3.   

    up
    建议在FormKeyPress里使用消息。
      

  4.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key=VK_RETURN then begin
      sendmessage(handle,wm_nextdlgctl,0,0);//向下一个控件Edit
      key:=0;
      end;
    if key=VK_UP then begin
      sendmessage(handle,wm_nextdlgctl,0,1);//向上一个控件Edit
      key:=0;
      end;
    end;
    在三个Edit中的KeyDown事件都设置成Edit1的KeyDown 就可以了