PDA

Ver la Versión Completa : Filtrar entrada de teclado


rolando_s
23-07-2005, 21:03:03
Hola foreros yo con mas dudas que nunca

estoy tratando de filtrar los datos que se ingresan a una aplicacion tengo un tedit1 en el que se ingresan los datos pero quiero que solo se ingresen numeros enter tab y borrar.
el codigoque tengo abisa que se ingreso una letra u otro caracter pero permite que se escriba.
lo que busco es algo que no permita que se escriban los demas caracteres.
si me pueden orientar un poco se los agradecere.

procedure TVentas_b.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

Begin
if not(chr(Key) in ['0','1', '2','3','4','5','6','7','8','9' ]) then
ShowMessage('solo numeros');
end;
end.

Lepe
23-07-2005, 21:44:59
procedure TVentas_b.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

Begin
if key > 31 then // Dejamos que se pulsen teclas de control
if not(chr(Key) in ['0','1', '2','3','4','5','6','7','8','9' ]) then
key := 0; // esto es lo que faltaba, anulamos la tecla.
end;
end.

Por cierto, si usa el portapapeles, si permitirá pegar letras :(

Un saludo

dec
23-07-2005, 21:51:58
Hola,

Esto no parece tener problemas con el portapapeles:


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// #8 is Backspace
if not (Key in [#8, '0'..'9']) then begin
ShowMessage('Invalid key');
// Discard the key
Key := #0;
end;
end;

Por cierto que lo encontré aquí (http://www.festra.com/eng/snip05.htm).

Actualización: Parece que sí hay algún problema con el portapapeles: No vale "pegar" letras, ¡pero tampoco números! :(

rolando_s
23-07-2005, 22:20:13
el codigo que envio lepe funciona 'OK'
en el anterior parece faltar un #antes del 0para que aule la tecla

gracias a ambos