Enter - para o proximo campo

Top  Previous  Next

=======================================================

                     1ª maneira

=======================================================

 

uses Messages;

 

OnFormKeyDown;

 

     If Key=#13 then

     Begin

          Key:=#0;

          Perform(WM_NextDlgCtl,0,0);

     end;

 

 Perform(WM_NextDlgCtl,-1,0); // volta foco

 

=======================================================

                     2ª maneira

=======================================================

 

no evento OnKeyPress do componente coloque o seguinte:

 

 if key = #13 then

   begin

      key := #0;

      Perform(CM_DialogKey, VK_TAB, 0);

   end;

 

=======================================================

       3ª = No projeto todo com 1 código (A MELHOR)

=======================================================

 

  private

    procedure EnterTAB(var Msg: Tmsg; var Handled : Boolean);

 

procedure TForm1.EnterTAB(var Msg: Tmsg; var Handled: Boolean);

begin

  if Msg.message = WM_KEYDOWN then

    if Msg.wParam = VK_RETURN then

    begin

      Msg.wParam := 0;

      Keybd_event(VK_TAB,0,0,0);

    end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  Application.OnMessage := EnterTAB;

end;

 

=======================================================

                    4ª maneira

=======================================================

 

SelectNext(Sender as tWinControl, True, True );

 

=======================================================

                    5ª maneira

=======================================================

 

SendMessage(Form1.Handle,WM_NEXTDLGCTL,0,0); 

 

=======================================================

           6ª para o Projeto inteiro novamente

=======================================================

procedure DoEnterAsTab(var Msg: TMsg; var Handled: Boolean);

 

Ai é só vc fazer o Application.OnMessage := DoEnterAsTab;

 

procedure TForm1.DoEnterAsTab(var Msg: TMsg; var Handled: Boolean);

begin

  if Msg.message  = WM_KEYDOWN then

  begin

    if Msg.wParam = VK_RETURN then

    begin

      keybd_event(VK_TAB, 000);

      Handled := true;

    end;

  end;

end;