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.