Programación General > C++ Builder

 Variable "key" Del Evento "keypress"

(1/2) > >>

Arquimedes01:
QUE ONDA A TODOS.

Me encontraba buscando la manera de validar un TEdit para que solo se puediera introducir numeros; entonces encontre este codigo en internet


Void__fastcall Tform1::Edit2KeyPress(Tobject *Sender,char &Key)
{  
      if ((Key < '0' || Key > '9') && Key != 8)
           Key=0;
}
// Se comprueba que el carácter sea un dígito o la tecla de borrado. Los caracteres //se encierran entre comillas simples porque estamos comparando un carácter tipo
// char. Asignar a Key el valor 0 es anular la pulsación.


Solo se ponen estas dos lineas en el evento keyPress del Edit, aqui sale mi duda,
me doy cuenta que por cada tecla diferente que se oprima se almacenara un valor dirente en  variable "Key"

a) quisiera saber que otros valores puede tomar esta variable a parte del las letras del abecedario y de los numeros, por ejemplo, en el codigo la variable toma el valor 0 para cancelar la pulsacion

B) la parte "(Key < '0' || Key > '9')", entendi que señala cualquier caracter que no sea un digito, pero para señalarlo lo hace haciendo una comparacion menor que y mayor que, es decir antes del '0' hay otros valores y despues del digito '9' existen otros caracteres que tienen un rango mayor. quiero saber cuales son estos valores que van antes y despues, lo que estoy pidiendo seria la lista ordenada de los caracteres desdel el rango menor hasta el mayor

c) cualquier informacion sobre este evento o sobre sobre esta variable lo agradecere muchisimo

DE ANTE MANO MUCHISIMAS GRACIAS POR TOMARSE EL TIEMPO PARA LEER MIS DUDAS, Y EN CASO DE SABER LA RESPUESTA, MUCHISIMAS GRACIAS MÁS.

Linspire:
Porque no vas almacenando todos los valores de las teclas pulsadas en un vector y al final los muestras en pantalla, o si solo lo que quieres es conocer el valor de cada caracter, no precisamente cuando se pulsa, tal vez te sirva esto:

 :whistling: crea un ciclo for de la siguiente forma:

--- Código: Text --- int i;char car='a';StringGrid1-&#62;RowCount=256; for(i=0;i&#60;256;i++){car++;StringGrid1-&#62;Cells[0][i]=car;} 
Espero haberte ayudado, y si no explicame otra vez porque tal vez no haya entendido. :rolleyes:

Arquimedes01:
Si es eso lo que queria saber en parte, por otro lado a parte de los 256 caracteres, veo que la variable Key puede tomar otros, como en el codigo:

Void__fastcall Tform1::Edit2KeyPress(Tobject *Sender,char &Key)
{
if ((Key < '0' || Key > '9') && Key != 8)
Key=0;
}


Key='0'  // lo cual no es lo mismo que
Key=0

osea, que valores toma Key si yo oprimo, enter, la barra espaciadora, o teclas direccionales. Si alguien sabe de esto le agradecere su ayuda.

por cierto:  !!MUCHAS GRACIAS LINSPIRE".

Linspire:
B) Pues no es tan dificil, puedes hacer esto

char tecla;
tecla=key; //pones un breakpoint aqui


Pues pones un breakpoint donde te lo indico, corres el programa y vas checando las teclas que vayas oprimiendo, asi de simple (eso creo)

De nadas!.. y espero te sirva :D

PD. Oviamente en el OnKeyPress

Kabern:
Todo programador debe saber que es el codigo ASCII, por ejemplo a la letra "A" le corresponde el codigo 65, al cero le corresponde 48 al 9 el 57, al ENTER el 13, el ESC 32, etc y cada tecla, tiene su codigo en el rango del 0 al 256.  si comparas 9>'A' es falso, (48 no es mayor que 65).

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa