PDA

Ver la Versión Completa : Validar Edit solo Texto


Elite237
28-07-2007, 01:15:45
Una pregunta, que codigo tengo que introducir en un edit para que me valide entrada solo de texto.Solo tengo validado para introducir solo numeros.El siguiente codigo es el que introduci para este:

if (key >=char (64)) or (key <char(47))
And (key >=char (14)) then
begin
mensaje:=Application.MessageBox('Digite un valor numerico.Gracias','Error de entrada');
key:=char(0);//Limpia el Edit

cHackAll
28-07-2007, 01:24:34
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
(Sender as TEdit).ReadOnly := not (key in [#8, ' ', 'a'..'z', 'A'..'Z']); // Agregas los caracteres que necesites
end;

roman
28-07-2007, 01:34:22
:eek: ¿Qué se supone que hace esto?

Si oprimo una letra, el control se hará de sólo lectura, pero la letra se escribirá y ya no podré escribir nada más, ni letras ni números.

// Saludos

Elite237
28-07-2007, 01:38:17
Solo que haga esto...

Al momento de querer introducir un numero, que te mande un mensaje de error, que diga que solo idebes introducir letras, y despues de cerrar esa ventana, que se limpie el edit.

cHackAll
28-07-2007, 01:45:12
:eek: ¿Qué se supone que hace esto?

Si oprimo una letra, el control se hará de sólo lectura, pero la letra se escribirá y ya no podré escribir nada más, ni letras ni números.

// Saludos
Estas mal amigo, pruébalo pues funciona como lo dejé!!!

Elite237, acá está lo tuyo:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9'] then
begin
Application.MessageBox('No puedes escribir numeros en ésta casilla!', 'Error de validación');
Key := #0;
end;
end;

Edito: roman no es Enabled; es ReadOnly!

roman
28-07-2007, 01:49:41
Estas mal amigo, pruébalo!!!


Tienes razón. Me di cuenta apenas mandé el mensaje. Muy curioso. La verdad pensé que el valor de ReadOnly se tomaría sóo después de la llamada al evento, pero ya veo que lo hace antes. Muy ingenioso.

// Saludos

Elite237
28-07-2007, 02:32:55
Ya quedo!!! Muchas Gracias, solo una pregunta...

Quiero validar los edits que tengo, y queria programar cada edit, pero me comentaron que se puede ahorrar todo esto mediante una funcion??

Tu sabras cual?

cHackAll
28-07-2007, 03:06:40
Al OnKeyPress de todos los TEdits ponle la función que te dejé.
El primer ejemplo sirve para la validación tambien de todos los TEdits que quieras.

Elite237
28-07-2007, 03:12:43
La función que me dices es esta?:

(sender as TEdit)

cHackAll
28-07-2007, 03:32:26
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
(Sender as TEdit).ReadOnly := not (key in [#8, ' ', 'a'..'z', 'A'..'Z']); // Agregas los caracteres que necesites
end;

Así es! Sender es el objeto que produce el evento; si a todos los TEdits que tengas direccionas el evento indicado a la anterior funcion vale!

Elite237
28-07-2007, 03:44:04
Entiendo lo que me dices, ahora mi duda es otra...si escribo eso en todos los edit, lo que me hara sera que me acepte solo letras y no numeros..ok?, si es asi, no todos los edit que tengo tienen que tener esa restriccion, puesto que en otros me deben aceptar tanto numeros como letras...y en ese caso como quedaria?

Nose si me di a entender.

axesys
28-07-2007, 17:26:38
Checate este componente

http://www.programmersheaven.com/download/5953/1/ZipView.aspx

Faust
28-07-2007, 21:41:53
Alguna vez quise hacer algo así, pero desafortunadamente se pueden pegar caracteres no deseados, también debes evitar el pegado desde el teclado (ctrl + V) y desde el menú contextual que aparece en el Edit.

Saludos...

Elite237
28-07-2007, 21:45:25
Ok..Gracias por todos sus sugerencias....Por lo pronto estoy validando cada edit, me sirve de practica, a parte necesito terminarlo para este lunes...De todas formas gracias