大家好!回车键代替tab键的问题,可以在窗体的onkeypress事件中写入:
if key=#13 then 
perform(WM_NEXTDLGCTL,0,0); 但是我想在按钮控件上,按回车还是回车,该如何做呢?还请指教!!

解决方案 »

  1.   

    if (key=#13)and not (ActiveControl is TButton) then 
    perform(WM_NEXTDLGCTL,0,0);
      

  2.   

    private
    procedure  doenterastab(var msg:tmsg;var handled: boolean);
    //------------------------------------------------------------
      
    procedure  TForm1.doenterastab(var msg:tmsg;var handled: boolean);   begin
          if msg.message =WM_KEYDOWN  then
             begin
                 if msg.wParam =VK_RETURN  then
                    keybd_event(VK_TAB,0,0,0);
             end;
       end;   
    //-----------------------------------------
    procedure Tkeyfrm.FormCreate(Sender: TObject);
    begin
     application.OnMessage :=doenterastab; {程序运行期间不断接受WM_KEYDOWN信息}
                                             {若按下VK_RETURN我们模拟一个 }
                                             { 键盘事件,把VK_TAB作为参数传送  }
                                             {在整个程序中都起作用
    end;
      

  3.   

    两中方法供你参考
    1  private
      procedure DoEnterAsTab(var Msg: TMsg; var Handled: Boolean);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure Tform1.DoEnterAsTab(var Msg: TMsg; var Handled: Boolean);
    begin
    if Msg.Message = WM_KEYDOWN then
    begin
    if (Msg.wParam = VK_RETURN)  then
    Keybd_event(VK_TAB, 0, 0, 0);
    end; //if
    end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    Application.OnMessage := DoEnterAsTab;
    end;end.
    2.把enter转换成tab
    要先在form 的事件里的onkeydown中添上tab,还要在要用的控件的onkeydown中选上tab
     procedure TGZRZLR.tab(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
     if ( key=vk_down)or(key=vk_return) then begin
       selectnext(activecontrol,true,true);
      end;
     if (key=vk_up) then begin
      selectnext(activecontrol,false,true);
     end;
      key:=0;
    end;
      

  4.   

    同意 皮皮lu
    也可以:
      procedure edit.keydown(...)
      begin
        if key=vk_return then
        .
        .
        .
      end;