Skip to content

Evento KeyPress del componente TEdit en VCL

En la programación de interfaces gráficas con Delphi, el componente TEdit es uno de los más utilizados para recibir entrada de texto del usuario. El evento KeyPress se activa cada vez que el usuario presiona y suelta una tecla, proporcionando un mecanismo para intervenir en la entrada de teclado en tiempo real.

Ejemplos de Código del Evento KeyPress

Restringir la entrada a solo números

Supongamos que quieres que un TEdit acepte solo números. Puedes utilizar el evento KeyPress para rechazar cualquier carácter que no sea un dígito.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9']) then
  begin
    // Descarta el carácter no deseado
    Key := #0;
  end;
end;

Convertir caracteres a mayúsculas

Para convertir cualquier letra ingresada en el TEdit a mayúscula automáticamente, puedes modificar el carácter Key directamente en el evento.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['a'..'z'] then
  begin
    // Convertir a mayúscula
    Key := Char(Ord(Key) - 32);
  end;
end;

Aceptar solo valores hexadecimales

En ciertas aplicaciones, como las que se utilizan para la programación de hardware o ciertas formas de codificación, puede ser necesario que el usuario ingrese valores hexadecimales.

El evento KeyPress puede ser configurado para aceptar solo caracteres válidos para la notación hexadecimal.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', 'A'..'F', 'a'..'f', #8]) then
  begin
    Key := #0;  // Ignora caracteres no válidos
  end;
end;

En este ejemplo, además de los números y letras válidas para hexadecimales, también permitimos la tecla de retroceso (#8) para borrar.

Filtrar caracteres especiales

Para los campos donde se espera que la entrada sea puramente alfanumérica, bloquear caracteres especiales puede ser crucial para la integridad de los datos.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', 'A'..'Z', 'a'..'z', #8]) then
  begin
    Key := #0;  // Bloquea caracteres especiales
  end;
end;

Intervención basada en la posición del cursor

Puedes decidir si un carácter puede ser ingresado basándote en la posición del cursor dentro del TEdit. Esto es útil en situaciones como la entrada de números de tarjeta de crédito o formatos específicos como fechas.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  CursorPos: Integer;
begin
  CursorPos := Edit1.SelStart;
  if (CursorPos = 2) and (Key <> '/') then  // Solo permite '/' en la tercera posición
  begin
    Key := #0;
  end;
end;

Usos Avanzados de KeyPress

Validación de entrada específica

El evento KeyPress puede ser extremadamente útil para validar formatos específicos a medida que el usuario escribe, como códigos postales, números de teléfono, etc.

Puedes combinarlo con expresiones regulares o simplemente con lógica condicional para aceptar o rechazar caracteres basados en el contexto actual del texto ingresado.

El manejo del evento KeyPress en TEdit es una técnica poderosa para controlar la entrada de datos de manera efectiva y eficiente.

Permite una intervención inmediata en la entrada del usuario, asegurando que los datos sean limpios y adecuados para su posterior procesamiento.