 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
viniciusalvess Novato

Registrado: Domingo, 31 de Março de 2013 Mensagens: 6
|
Enviada: Qua Jan 29, 2014 10:28 pm Assunto: VK_F4 e s tem o mesmo valor char |
|
|
Olá , estou com dúvida de como filtro os caracteres digitados no teclado deixando passar somente o VK_F4 e não deixar passar o 's' , ambas tem o mesmo valor na tabela ascii , e não esotu compreendendo muito bem como fazer , grato.
Editado pela última vez por viniciusalvess em Qui Jan 30, 2014 2:27 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Jan 30, 2014 8:54 am Assunto: |
|
|
onde vc programou? onKeyDown? OnKeyPress? evento do form? evento de alg componente? vc zerou a tecla apos processa-la? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
 |
viniciusalvess Novato

Registrado: Domingo, 31 de Março de 2013 Mensagens: 6
|
Enviada: Qui Jan 30, 2014 9:43 am Assunto: |
|
|
Está no evento keypress de um TEdit
Código: |
procedure TForm1.edtIdProdutoKeyPress(Sender: TObject; var Key: Char);
begin
If not( key in['0'..'9',',','*',#8 ,#13,#113,#114,#115,#27] ) then
key:=#0;
end;
|
de acordo com a tabela ascii os caracteres [q r s] tem os respectivos valores 113,114,115 o que é igual aos valores das constantes VK_F2 ,VK_F3,VK_F4 , no teste acima acaba que tanto as teclas qrs e as teclas f2 f3 f4 passam no evento do tedit, gostaria que somente passasse os eventos das teclas f2 f3 f4.
fiz o mesmo teste no onkeydown do edit , onde o parametro key é um word mesmo assim não tivesse sucesso. |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Qui Jan 30, 2014 10:23 am Assunto: |
|
|
Você está entendendo errado.
Os valores que você comentou (q[113] r[114] s[115]) são valores ASCII, ou seja, texto. Não são Virtual Keys ou teclas pressionáveis.
Se você quer testar o pressionamento dessas teclas use os eventos OnKeyDown e OnKeyUp e os valores Q[81] R[82] e S[83], que são tanto valores ASCII quanto Virtual Keys.
Lembrando: o evento OnKeyPress tem a função de manipular o resultado do envio de um caractere ASCII (texto), ou seja, um VK_F4 não passa por ele porque não é um valor ASCII.
Abraços. |
|
Voltar ao Topo |
|
 |
viniciusalvess Novato

Registrado: Domingo, 31 de Março de 2013 Mensagens: 6
|
Enviada: Qui Jan 30, 2014 10:35 am Assunto: |
|
|
GustavoToyota escreveu: | Você está entendendo errado.
Os valores que você comentou (q[113] r[114] s[115]) são valores ASCII, ou seja, texto. Não são Virtual Keys ou teclas pressionáveis.
Se você quer testar o pressionamento dessas teclas use os eventos OnKeyDown e OnKeyUp e os valores Q[81] R[82] e S[83], que são tanto valores ASCII quanto Virtual Keys.
Lembrando: o evento OnKeyPress tem a função de manipular o resultado do envio de um caractere ASCII (texto), ou seja, um VK_F4 não passa por ele porque não é um valor ASCII.
Abraços. |
não . Eu gostaria de testar o pressionamento das teclas F2,F3,F4 os valores 81,82,83 são para as letras q r s porém maiúsculas os valores dessas letras minúsculas são q[113] r[114] s[115] o que são correspondentes aos valores das constantes VK_F2, VK_F3, VK_F4. |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Qui Jan 30, 2014 10:56 am Assunto: |
|
|
viniciusalvess escreveu: | não . Eu gostaria de testar o pressionamento das teclas F2,F3,F4 os valores 81,82,83 são para as letras q r s porém maiúsculas os valores dessas letras minúsculas são q[113] r[114] s[115] o que são correspondentes aos valores das constantes VK_F2, VK_F3, VK_F4. |
É só testar elas nos eventos OnKeyUp ou OnKeyDown, pois elas não vão passar pelo evento OnKeyPress por não serem valores ASCII, mas sim teclas. |
|
Voltar ao Topo |
|
 |
viniciusalvess Novato

Registrado: Domingo, 31 de Março de 2013 Mensagens: 6
|
Enviada: Qui Jan 30, 2014 2:13 pm Assunto: |
|
|
Código: |
procedure TForm1.edtIdProdutoKeyDown(Sender: TObject; var Key:Word;Shift: TShiftState);
begin
If not( key in[VK_NUMPAD0 .. VK_NUMPAD9,VK_DECIMAL,VK_MULTIPLY,VK_BACK ,VK_RETURN,VK_F2,VK_F3,VK_F4,VK_ESCAPE] ) then
begin
key := 0;
exit;
end;
|
não sei o valor para atribuir no key , mas mesmo assim está passando os demais caracteres. |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|