为了输入方便,需要按 Enter 键跳到下一控件,但又不能让它自动跳到 Button 等不可接收输入的控件上去。请问有没有什么好的实习方法。

解决方案 »

  1.   

    处理onkeydown事件
    if key=VK_RETURN then
    begin
    //-----some vcl.setfocus;
    end;
      

  2.   

    我用这个方法解决的,先凑合着用了。在memo中就需要用 ctrl+enter来换行了
    procedure TForm_w11.FormKeyPress(Sender: TObject; var Key: Char);
    begin
        if Key=#13 then
        begin
            Key:=#0;
            Perform(Wm_NextDlgCtl,0,0);
        end;
        while ActiveControl is TButton do Perform(Wm_NextDlgCtl,0,0);
    end;
      

  3.   

    > 属性及相关值:
    MainFrame: KeyPreview = True
    Edit_Name :TabOrder = 0;
    Edit_Age :TabOrder = 1;
    Edit_Adress :TabOrder = 2;> 代码及说明:
    在interface 的private定义一个过程
    procedure TForm1.Tab(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    Begin
      (**) 
      if (key=VK_Down) or (key=13) then
       SelectNext(ActiveControl,True,True);
      if key=VK_Up then
       SelectNext(ActiveControl,False,True);
      Key:=0;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Edit_Name. OnKeyDown  = Tab;
    Edit_Age .OnKeyDown = Tab;
    Edit_Adress . OnKeyDown = Tab;
    end;
      

  4.   

    让最后一个可输入的控件的onkeypress的事件为key := #0;就可以了