如何实现enter(回车键)跟tab键的效果一样,在回车时自动使Taborder比自己大1的物件获得焦点~~如果大1的物件visible=false在继续往下给焦点????

解决方案 »

  1.   

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    if key=#13 then
            begin
              if not (Activecontrol is Tmemo) then
              begin
                key:=#0;
                keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0);
              end;
            end;end;
      

  2.   

    用DosMove控件或者用以下代码
    procedure TFmXXX.OnSimulateTabKey(Sender: TObject; var Key: word; Shift : TShiftState);
    begin
      if ((Key = VK_DOWN) or (Key = VK_RETURN)) then
        self.Perform(WM_NEXTDLGCTL, 0, 0)     //下移
      else if (Key = VK_UP) then
        self.Perform(WM_NEXTDLGCTL, 1, 0);    //上移
      end;
    end;//初始化
    procedure TFmXXX.FormCreate(Sender: TObject);
    begin
      self.OnKeyDown := OnSimulateTabKey;
    end;
      

  3.   

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); 
    begin 
    if key=#13 then 
            begin 
              if not (Activecontrol is Tmemo) then 
              begin 
                key:=#0; 
                keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0); 
              end; 
            end; end;
      

  4.   

    所有需要获取焦点控件共用下面的OnKeyDown事件:procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_RETURN then
        PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);
    end;
      

  5.   

    在onkeypress 里写 
    if key=#13 then
       下一个控件.setfucse;
    就可以了。前几天刚学会,试一下,可以就给分。。
      

  6.   

    在onkeypress里写
    If Key = #13 Then SelectNext(TwinControl(Sender), True, True);然后在其它的控件的onkeypress里直接选上一个控件的名称就可以了。不用一个一个都写,很方便