Fórum Interceptar o pressionamento da tecla TAB - Urgente #204142

04/01/2004

0

PessoALL,

Tenho algumas validações de campos no evento keypress de um edit.
Quando é teclado enter as validações são acionadas.

Eu preciso saber se há alguma forma de fazer com que a tecla TAB não
passe para o próximo componente ativo, antes de fazer as validações que são acionadas no enter.

Já tentei TODOS os eventos de teclado para o componente e não funciona. (o KeyPreview do form está true).

Eu vi uns exemplos na internet, utilizando o TMsg mas não entendi como
funciona, se alguém puder me ajudar nesse abacaxi.


Dirceualves

Dirceualves

Responder

Post mais votado

05/01/2004

Olá d novo Dirceu
Testei no evento OnKeyUp, e... deu certo! :)
Veja só:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_TAB then
    ShowMessage(´Tecla TAB´);
end;

Lembrete: a propriedade KeyPreview setada como true não influi em nada no pressionar da tecla TAB (segundo a ajuda do próprio Delphi, ela não gera eventos d teclado).
Sucesso


Tnaires

Tnaires
Responder

Gostei + 1

Mais Posts

05/01/2004

Tnaires

Caro Dirceu:
Tentei o seguinte código:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_TAB then
    ShowMessage(´Tecla TAB´);
end;

O interessante é q ele só funciona qdo eu pressiono CTRL + TAB... Se pressionar TAB sozinho ele não dá certo.


Responder

Gostei + 0

27/11/2020

Ramboli

Olá d novo Dirceu
Testei no evento OnKeyUp, e... deu certo! :)
Veja só:
[code:1:a0c40618aa]
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_TAB then
ShowMessage(´Tecla TAB´);
end;
[/code:1:a0c40618aa]
Lembrete: a propriedade KeyPreview setada como true não influi em nada no pressionar da tecla TAB (segundo a ajuda do próprio Delphi, ela não gera eventos d teclado).
Sucesso




procedure TfTeste.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var
  conta : Extended;
begin
  conta := 0;
  if Key = VK_TAB then
    begin
      while conta = 0 do
      begin
        if not (query.State in [dsEdit,dsInsert]) then
        begin
         query.append;
        end

        else
          begin
            conta :=1;
            exit;
          end;
      end;
    end;
end;


fiz isto, pode ajudar, ele verifica se a query esta aberta editando ou inserindo algo, caso nao esteja ele abre, caso esteja ele ignora a parte de dar append na query graças ao while, é um code bem simples, provavelmente voces ja devem ter aperfeiçoado isto, abraço


Responder

Gostei + 0

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

Aceitar