Fórum Como capturar o pressionamento da seta do teclado? #262658

19/12/2004

0

Preciso capturar quando a tecla da seta do teclado for pressionada, mas como no form tem alguns panels que tem que receber o foco, esta função não consegue ser percebida pelo evento do form OnKeyDown. Minha idéia é utilizar algum evento parecido com este mas que abranja toda a aplicação, mas não sei como fazer.
Alguém sabe como fazer ou tem alguma sugestão diferente?


Raserafim

Raserafim

Responder

Post mais votado

19/12/2004

Tente assim:

procedure TForm1.TeclaSeta(var Msg: TMsg; var Handled: Boolean);
begin
   If not (Screen.ActiveForm.ClassName = ´TMessageForm´) then
      begin
      If Msg.message = WM_KEYDOWN then
         begin
         Case Msg.wParam of
         VK_UP : ShowMessage(´cima´);
         VK_LEFT : ShowMessage(´esquerda´);
         VK_DOWN : ShowMessage(´baixo´);
         VK_RIGHT : ShowMessage(´direita´);
         end;
         end;
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.OnMessage := TeclaSeta;
end;



Fabio.hc

Fabio.hc
Responder

Gostei + 1

Mais Posts

19/12/2004

Fabio.hc

Tente assim:

Coloque True na propriedade KeyPreview do form.


Responder

Gostei + 0

19/12/2004

Raserafim

ativando a propriedade KeyPreview consigo capturar todas as teclas, menos as setas do teclado.


Responder

Gostei + 0

23/12/2004

Raserafim

Valeu Fábio, é isso mesmo.

Mas preciso complementar com uma coisa:

As setas do teclado funcionam, por padrão, como a tecla TAB. Preciso interceptar isso, pois em alguns botões quero que as setas assumam outras funções. Portanto preciso que ao pressionar as setas não o foco não seja passado para o próximo componente, e sim execute um determinado procedimento.


Responder

Gostei + 0

27/12/2004

Fabio.hc

Tente assim:

...


VK_UP: begin
       façaalgumacoisa;
       Msg.message:=0;
       end;

...



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar