SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: arturo cabrera en Martes 9 de Mayo de 2006, 23:27

Título: Limitar Teclas En Edits.
Publicado por: arturo cabrera en Martes 9 de Mayo de 2006, 23:27
hola. tengo una consulta. antes en delphi podia en el evento key press de los edit aumentaba un codigo utilizando key para que solo se escriban numeros o solo se esciban letras. pero con builder no tengo idea. si alguno sabe alguna manera. se lo agradecería.

Código: Text
  1. void __fastcall Tfcalculo_SDK::etemperaturaKeyPress(TObject *Sender,
  2.       char &Key)
  3. {
  4.  //probaba:   if( key in ["a".."z"])
  5.                                key="";
  6.  
  7. }
  8.  

pero este codigo no me sale.
Título: Re: Limitar Teclas En Edits.
Publicado por: SkaJaf en Miércoles 10 de Mayo de 2006, 18:45
Hay un evento que es OnKeyPress y es lo mismo que en delphi
Título: Re: Limitar Teclas En Edits.
Publicado por: arturo cabrera en Miércoles 10 de Mayo de 2006, 23:35
la verdad que lo estoy haciendo en este evento del edits.
suponete que quiera que no se ingrese la letra "a" lo que pongo y funciona es lo siguiente:

Código: Text
  1. void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
  2. {
  3.  
  4.  if(Key  ==('a'))
  5.   {
  6.     Key=NULL;
  7.   }
  8. }
  9.  

pero lo que yo quiero es definirla dentro de un grupo. es decir dentro del grupo de las letras de "a..z" y no se como hacerlo. en delphi es con in. `pero  en builder nu me funciona. no se cual es para usar en cuentas de in.
Título: Re: Limitar Teclas En Edits.
Publicado por: Linspire en Jueves 11 de Mayo de 2006, 00:32
Creo que serìa màs o menos asì.

int tecla;
        tecla=Key;
        if((tecla>='a') || (tecla<='z'))
        {
                tecla=NULL;
        }
else
        Key=tecla;

No lo he probado porque ahorita estoy en un cyber y no tengo Builder pero tal vez te funcione.

Suerte!..
Título: Re: Limitar Teclas En Edits.
Publicado por: arturo cabrera en Jueves 11 de Mayo de 2006, 01:04
muchas gracias por abrirme la mente para ver el problema de otra manera. mira utilice el codigo que me mandaste lo toque un poquito y lo deje asi.
Código: Text
  1.  
  2. int tecla;
  3. tecla=Key;
  4. if(((tecla&#62;='a')&& (tecla&#60;='z')) || ((tecla&#62;='A') && (tecla&#60;='Z')) )
  5. {
  6.     Key=NULL;
  7. }
  8. else
  9.     Key=tecla;
  10.  

para lo que lo necesito me basta.
muchas gracias.
Título: Re: Limitar Teclas En Edits.
Publicado por: _Viktor en Jueves 11 de Mayo de 2006, 17:09
Creo que esto lo haría un poco mejor, ya que solo permites el ingreso de numeros, comas, puntos y el signo de negativo...  Solo debes incluir la siguiente unidad:

#include <idglobal.hpp> // Para la IsNumeric

Código: Text
  1. void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
  2. {
  3.   if(! IsNumeric(Key) && ((Key != '.') && (Key!=',') && (Key!='-')))
  4.      Key = 0;
  5.  
  6. }
  7.  

Saludos!!
Título: Re: Limitar Teclas En Edits.
Publicado por: Linspire en Jueves 11 de Mayo de 2006, 17:23
Que bueno que te haya servido, y me parece excelente la aportación de Viktor, realmente no había puesto mucha atención a esta cuestión pero me agrada que se haya resuelto satisfactoriamente.

Si en algo más puedo ayudarte no dudes en preguntar.

Saludos!.. :D  :lightsabre:  :hola:  :comp:
Título: Re: Limitar Teclas En Edits.
Publicado por: arturo cabrera en Jueves 11 de Mayo de 2006, 19:15
Muchas gracias por todas las posibles soluciones que me dieron.