En ocasiones necesitamos validar que en un control TEdit el usuario sólo pueda teclear números. Lo que hay que hacer es poner el siguiente código en el evento OnKeyPress de nuestro TEdit.
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (!((Key >= '0' && Key <= '9') || Key == '\b'))
Key = 0;
}
Lo que hace este código es ignorar la tecla pulsada si dicha tecla no está dentro del rango de 0 a 9 y tampoco es el backspace (retroceso). Si queremos que los números estén alineados a la derecha, el truco es no utilizar un TEdit, sino un control TMemo haciendolo del tamaño deseado y seleccionando la opción taRightJustify en la propiedad Alignment e indicando el número máximo de caracteres en la propiedad MaxLength.
Etiquetas: capturar solo numeros en c++ builder, OnKeyPress, validar TEdit
Octubre 10, 2009 a las 10:48 am |
Gracias por este aporte, tengo una pregunta, si queremos aceptar números decimales como lo hacemos?, considerando que dependiendo a la configuracion hay equipos que el separador de decimales es ‘,’ y en otros ‘.’.
Octubre 12, 2009 a las 12:59 pm |
Hola Jorge, agregando el punto decimal quedaría algo como esto;
{
if (!((Key >= '0' && Key <= '9') || Key == '\b' || Key == '.')))
Key = 0;
}
Para validar punto o coma según el país, yo haría un módulo de configuración en la aplicación y que el usuario seleccione si el separador de decimales es el punto o la coma, dependiendo de eso asignaría un valor a una varibale global y con eso podrías hacer algo como esto:
if (variable==1)
{
if (!((Key >= '0' && Key = '0' && Key <= '9') || Key == '\b' || Key == ',')))
Key = 0;
}