Evento de teclado
Preciso gerar um evento em um form que, seja qual for o campo de edição, contido no form, ao teclar [Alt]+[A], forneça o caractere ´ª´ à entrada; ao teclar [Alt]+[O], forneça o caractere ´º´. Como posso fazer isto?
OBS: já tentei manipular o evento OnKeyDown da form, mas não surtiu efeito e as combinações acima não geram um char para o evento OnKeyPress
OBS: já tentei manipular o evento OnKeyDown da form, mas não surtiu efeito e as combinações acima não geram um char para o evento OnKeyPress
Anonymous
Curtidas 0
Respostas
Aroldo Zanela
21/02/2003
Preciso gerar um evento em um form que, seja qual for o campo de edição, contido no form, ao teclar [Alt]+[A], forneça o caractere ´ª´ à entrada; ao teclar [Alt]+[O], forneça o caractere ´º´. Como posso fazer isto?
OBS: já tentei manipular o evento OnKeyDown da form, mas não surtiu efeito e as combinações acima não geram um char para o evento OnKeyPress
No form coloque o tratamento no OnKeyPress e mude a propriedade [b:e716f1a5fc]KeyPreview para true.[/b:e716f1a5fc]
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = ´A´ then Key := ´B´; end;
GOSTEI 0
Anonymous
21/02/2003
Conforme escrevi na minha mensagem original, as combinações [Alt]+[letra/numero] não geram o evento OnKeyPress, pois não geram um char ASCII direto. Tentei usar [Ctrl+A] e [Ctrl+O] no evento OnKeyPress, funcionou direito, exceto para os objetos TMemo e TRichEdit, onde a combinação [Ctrl+A] apaga todo o texto digitado antes de gerar o evento. Não quero desativar caracteres validos, pois acho deselegante e pouco intuitivo para o usuário. Gostaria de usar as combinações [Alt+A] para o caractere ª e [Alt+O] para o caractere º, e creio que só vou conseguir isto manipulando o evento OnKeyDown, só que não consegui fazê-lo; por isto, estou escrevendo para cá.
Pedro Campos
Rio de Janeiro, RJ
Pedro Campos
Rio de Janeiro, RJ
GOSTEI 0
Aroldo Zanela
21/02/2003
Conforme escrevi na minha mensagem original, as combinações [Alt]+[letra/numero] não geram o evento OnKeyPress, pois não geram um char ASCII direto. Tentei usar [Ctrl+A] e [Ctrl+O] no evento OnKeyPress, funcionou direito, exceto para os objetos TMemo e TRichEdit, onde a combinação [Ctrl+A] apaga todo o texto digitado antes de gerar o evento. Não quero desativar caracteres validos, pois acho deselegante e pouco intuitivo para o usuário. Gostaria de usar as combinações [Alt+A] para o caractere ª e [Alt+O] para o caractere º, e creio que só vou conseguir isto manipulando o evento OnKeyDown, só que não consegui fazê-lo; por isto, estou escrevendo para cá.
Pedro Campos
Rio de Janeiro, RJ
Caro Pedro,
Minha sugestão é utilizar uma variável Private de comprimento de 2 para servir de ´pilha´ para entrada de dados e quando tiver uma combinação _a, _A, _o, _O, faça a conversão. Parece simples, mas vai ter que escrever um pouco.
GOSTEI 0
Aroldo Zanela
21/02/2003
Minha sugestão é utilizar uma variável Private de comprimento de 2 para servir de ´pilha´ para entrada de dados e quando tiver uma combinação _a, _A, _o, _O, faça a conversão. Parece simples, mas vai ter que escrever um pouco.
Desculpe, onde se lê: ´pilha´
leia-se: ´fila´
GOSTEI 0
Anonymous
21/02/2003
Valeu, meu caro Aroldo Zanela.
Pedro Campos
Rio de Janeiro, RJ
Pedro Campos
Rio de Janeiro, RJ
GOSTEI 0