Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dhonathas felix

[Resolvido] tecla enter funcionar como tab delphi 7

Recommended Posts

ola bom dia

duvida iniciante?

pessoal to com uma pequena duvida quero sabe como que faz a tecla enter ficar com a mesma funçao da tecla tab no delphi para o meu programa funcionar legal mesmo :D muito obrigado pela atençao. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer assim que funciona:

 

Declare em USES : Grids

 

procedure TfrmPri.MudarComEnter(var Msg: TMsg; var Handled: Boolean);

begin

If not ((Screen.ActiveControl is TCustomMemo) or (Screen.ActiveControl is TCustomGrid) or (Screen.ActiveForm.ClassName = 'TMessageForm')) then begin

If Msg.message = WM_KEYDOWN then begin

Case Msg.wParam of

VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0,0);

VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0);

end;

end;

end;

end;

 

E no evento OnCreate do Form coloque:

Application.OnMessage := MudarComEnter;

 

 

Dica retirada do arquivo DTDelphi 2.8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

Você pode fazer também pelo objeto ApplicationEvents que fica na aba Additional (segunda aba da esquerda para direita).

 

Ao colar o objeto no projeto adicione no evento OnMessage do mesmo o código abaixo:

 


Procedure TForm1.AppEvtMessage(Var Msg: tagMSG; Var Handled: Boolean);

Var Key : Word;

Begin

   If Screen.ActiveForm = Self Then

       Case Msg.Message Of

           WM_KeyDown, WM_SysKeyDown : Begin

               Key := Msg.wParam;



               If (Key = Vk_Return) Or (Key = Vk_Tab) Then Begin

                    {Ação desejada}   

               End;

           End;

       End;

End;

 

Isto executara o código todas as vezes que forem apertadas as teclas Enter ou Tab. Para se ter controle de que objeto está em foco no momento, verifique a variável ActiveControl.

 

Exemplo:

.
.
.
                    {Ação desejada}
	     If ActiveControl Is TEdit Then          //* Pula foco para o próximo objeto caso seja um Edit *//
		Perform(WM_NextDlgCtl,0,0);

                    If ActiveControl = Button1 Then         //* Se o botão button1 estiver em foco, execute *//
		 Button1.Click;

.
.
.

 

Espero ter ajudado,

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

Você pode fazer também pelo objeto ApplicationEvents que fica na aba Additional (segunda aba da esquerda para direita).

 

Ao colar o objeto no projeto adicione no evento OnMessage do mesmo o código abaixo:

 


Procedure TForm1.AppEvtMessage(Var Msg: tagMSG; Var Handled: Boolean);

Var Key : Word;

Begin

   If Screen.ActiveForm = Self Then
       Case Msg.Message Of

           WM_KeyDown, WM_SysKeyDown : Begin

               Key := Msg.wParam;



               If (Key = Vk_Return) Or (Key = Vk_Tab) Then Begin

                    {Ação desejada}   

               End;

           End;

       End;

End;

 

Isto executara o código todas as vezes que forem apertadas as teclas Enter ou Tab. Para se ter controle de que objeto está em foco no momento, verifique a variável ActiveControl.

 

Exemplo:

.
.
.
                    {Ação desejada}
	     If ActiveControl Is TEdit Then          //* Pula foco para o próximo objeto caso seja um Edit *//
		Perform(WM_NextDlgCtl,0,0);

                    If ActiveControl = Button1 Then         //* Se o botão button1 estiver em foco, execute *//
		 Button1.Click;

.
.
.

 

Espero ter ajudado,

 

Abraços,

 

 

Bruno Crema, muito obrigado você me ajudou muito vlw manin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.