Capturar sólo números en C++ Builder

By rtmex

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: , ,

2 comentarios para “Capturar sólo números en C++ Builder”

  1. Jorge Dice:

    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 ‘.’.

    • rtmex Dice:

      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;
      }

Escribe un comentario