Delphi | Pgina
sobre a Linguagem |
Usando Virtual-Key CodesComo detectar as teclas pressionadas para impulsionar uma determinada ao 27-03-2015 O Windows define constantes especiais para cada tecla que voc pressiona no teclado. A estas constantes damos o nome de Virtual-Key Codes; virtual aqui porque no so valores reais, mas valores com os quais teremos maior facilidade para trabalhar (afinal, os valores reais esto em binrio, consistindo numa sequncia de 0s e 1s e trabalhar diretamente com eles seria catico). Esses cdigos virtuais identificam vrias teclas e podem ser usados quando manipulamos os eventos OnKeyUp or OnKeyDown de diversos componentes (inclusive do prprio Form). Os cdigos virtuais no indicam apenas tecla, mas tambm os botes do mouse. Todas as constantes esto definidas na unit Windows do Delphi. Imagine, por exemplo, que voc desejaria que, na tela abaixo, ao pressionarmos ENTER sobre o componente TEdit, a pesquisa do boto Procurar j comeasse. Para isso, bastaria um cdigo semelhante a este:
Aqui, estamos supondo, claro, que o boto Button1 j foi codificado para pesquisar ao ser clicado. Note tambm que o prprio mtodo OnKeyDown( ) j recebe, como parmetros, as variveis Key e Shift; a primeira guarda um valor numrico que indica qual foi a tecla pressionada, e a segunda armazena teclas que podem ser pressionadas simultaneamente com a primeira (ou botes do mouse). No caso de ALT+F4 (para fechar uma janela, por exemplo), a varivel Shift armazenaria o ALT e Key ficaria com VK_F4. Supondo que estejamos numa janela em que voc queira impedir o comando ALT+F4 de ser usado, h uma maneira simples de bloque-lo. o que mostramos no exemplo a seguir:
Detectando a utilizao das teclas desejadas e alterando-se o valor de uma delas para zero, a janela j no mais receber ALT+F4 mas, sim, ALT e zero (na linha onde se l Key := 0). Para que o cdigo acima seja detectado apenas pela janela da sua aplicao, basta usar o evento OnKeyDown do formulrio (e no de outro componente). Alm disso, a propriedade KeyPreview do form deve ser marcada como True (do contrrio, as mensagens de teclas que passarem pelo form no sero interpretadas). Abaixo,uma tabela mostrando os valores mais usados e sua correspondncia em ASCII e em hexadecimal:
Fonte: ASMC, delphi.about.com |
- Todos os artigos - |