Interceptar o pressionamento da tecla TAB - Urgente
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.
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
Curtidas 0
Melhor post
Tnaires
05/01/2004
Olá d novo Dirceu
Testei no evento OnKeyUp, e... deu certo! :)
Veja só:
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
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
GOSTEI 1
Mais Respostas
Tnaires
04/01/2004
Caro Dirceu:
Tentei o seguinte código:
O interessante é q ele só funciona qdo eu pressiono CTRL + TAB... Se pressionar TAB sozinho ele não dá certo.
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.
GOSTEI 0
Ramboli
04/01/2004
Olá d novo Dirceu
Testei no evento OnKeyUp, e... deu certo! :)
Veja só:
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
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
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
GOSTEI 0