Problema com OnKeyUp
Olá pessoal.
Tenho um problema com o evento onkeyup do dbgrid. Para verificar se a tecla digitada em uma celula do dbgrid é numero ou letra eu usava o evento onkeypress, que funcionava perfeitamente. o unico problema é que ele é disparado antes de o dbgrid informar ao dataset se a operação é insersão ou edição. Pra resolver isso eu usei o evento onkeyup, que se encaixou como uma luva. o problema é que o jeito do onkeyup tratar a tecla pressionada é diferente do jeito do onkeypress. O onkeypress trata o caracter da tecla como um char, facilitando a comparação. Já o onkeyup trata a tecla pressionada como um codigo ascii, dificultando a comparação.
A função chr retorna o caracter equivalente ao codigo ascii da tecla, sendo assim eu fiz o seguinte teste: que funciona, mas tem varios bugs. Ex.: As tecla de função (F1, F2, ...) são interpretadas como letras, assim como os numero do teclado numerico.
Alguem sabe um modo mais eficiente de se fazer esta comparação?
Agradeço antecipadamente.
Tenho um problema com o evento onkeyup do dbgrid. Para verificar se a tecla digitada em uma celula do dbgrid é numero ou letra eu usava o evento onkeypress, que funcionava perfeitamente.
if Key in [´A´..´Z´, ´a´..´z´] then ...
A função chr retorna o caracter equivalente ao codigo ascii da tecla, sendo assim eu fiz o seguinte teste:
if Chr(Key) in [´A´..´Z´, ´a´..´z´] then ...
Alguem sabe um modo mais eficiente de se fazer esta comparação?
Agradeço antecipadamente.
Flaviosan
Curtidas 0
Melhor post
Flaviosan
07/02/2005
Outra coisa a variavel caracter tem que ser global.
Bye.
Bye.
GOSTEI 1
Mais Respostas
Flaviosan
07/02/2005
Desculpe o flood, mas estou precisando muito de uma resposta.
Uma dica: usar os os caodigos ascii pras teclas de letras não funciona
Uma dica: usar os os caodigos ascii pras teclas de letras não funciona
if Key in [65..90, 97..122] then ...
GOSTEI 0
Marcelo Saviski
07/02/2005
não é a melhor foma, mas
crie uma [color=blue:c7ae6f29e8]variavel [/color:c7ae6f29e8]do tipo Char
no [color=blue:c7ae6f29e8]OnKeyPress[/color:c7ae6f29e8], faça
no on [color=blue:c7ae6f29e8]KeyUp[/color:c7ae6f29e8]
crie uma [color=blue:c7ae6f29e8]variavel [/color:c7ae6f29e8]do tipo Char
Caracter: Char;
no [color=blue:c7ae6f29e8]OnKeyPress[/color:c7ae6f29e8], faça
Caracter := Key;
no on [color=blue:c7ae6f29e8]KeyUp[/color:c7ae6f29e8]
if Caracter in [´a´..´z´, ´A´..´Z´] then (...)
GOSTEI 1
Flaviosan
07/02/2005
Obrigado Marcelo, matou a pau!
Essa ideia me passou pela cabeça, mas como vc disse, não é a melhor solução e nem tentei implementa-la.
Valeu!
Essa ideia me passou pela cabeça, mas como vc disse, não é a melhor solução e nem tentei implementa-la.
Valeu!
GOSTEI 0