SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Arquimedes01 en Jueves 25 de Octubre de 2007, 07:41

Título: Variable "key" Del Evento "keypress"
Publicado por: Arquimedes01 en Jueves 25 de Octubre de 2007, 07:41
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.
Título: Re: Variable "key" Del Evento "keypress"
Publicado por: Linspire en Jueves 25 de Octubre de 2007, 17:47
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
  1.  
  2. int i;
  3. char car='a';
  4. StringGrid1-&#62;RowCount=256;
  5.  
  6. for(i=0;i&#60;256;i++)
  7. {
  8. car++;
  9. StringGrid1-&#62;Cells[0][i]=car;
  10. }
  11.  

Espero haberte ayudado, y si no explicame otra vez porque tal vez no haya entendido. :rolleyes:
Título: Re: Variable "key" Del Evento "keypress"
Publicado por: Arquimedes01 en Sábado 27 de Octubre de 2007, 01:23
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".
Título: Re: Variable "key" Del Evento "keypress"
Publicado por: Linspire en Sábado 27 de Octubre de 2007, 01:51
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
Título: Re: Variable "key" Del Evento "keypress"
Publicado por: Kabern en Miércoles 19 de Diciembre de 2007, 00:01
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).
Título: Re: Variable "key" Del Evento "keypress"
Publicado por: Eternal Idol en Miércoles 19 de Diciembre de 2007, 00:28
Cita de: "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).
Si comparas 9 > 'A' es falso, 9 es menor a 65 (9 no es '9').

Por favor no respondas en temas que ya estan resueltos meses despues.