Mensagens - capturar tab de teclas do aplicativo

Top  Previous  Next

 

// em alguns componentes ou telas certas teclas não respondem ao KeyDown

// da form mesmo no KeyPreview = True.

// Isto é o caso do TAB... como resolver?

 

 

 TForm1 = class(TForm)

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

 private

 end;

 

 implementation

 

 var

   OldAppMsg: TMessageEvent;

   

procedure TForm1.FormCreate(Sender: TObject);

begin

  // salva o processador de mensagens do app

  OldAppMsg             := Application.OnMessage;

  // reinderessa o mesmo

  Application.OnMessage := ControlaKeys;

end;

 

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

begin

  // captura teclas de todo o application para cá

  if (Msg.message = WM_KEYDOWN) then

    case Msg.wParam of

      Vk_Down : 'Luck Skywalker';

      Vk_Tab  : 'Darth Vader';

    end;

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  // restaura

  Application.OnMessage := OldAppMsg;

end;