Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar Edit.... (https://www.clubdelphi.com/foros/showthread.php?t=76528)

L3st4t 07-11-2011 20:45:37

Validar Edit....
 
Buenas

Tengo estos 3 codigos:

Código Delphi [-]
IF (NOT(Upcase(Key) In[#8,#32,{'0'..'9'}'A'..'Z','a'..'z','Ñ','ñ'])) then
 begin
  Key:= #0;
  Application.MessageBox('El Valor a Ingresar Debe Ser Numerico','',mb_ok + mb_iconwarning);
  EditCode.Text := '';
  EditCode.SetFocus;
  Exit;
 end;

-----------------------------------------------------------------------------------------

Código Delphi [-]
IF NOT (Key in [#8, ',' ,'0'..'9']) then
 begin
  Key:= #0;
  Application.MessageBox('El Valor a Ingresar Debe Ser Numerico','',mb_ok + mb_iconwarning);
  EditCode.Text := '';
  EditCode.SetFocus;
  Exit;

--------------------------------------------------------------------------------------------

Código Delphi [-]
IF (key <#48) or (key >#57) then
 begin
 IF key<>#8 then
 begin
  Key:= #0;
  Application.MessageBox('El Valor a Ingresar Debe Ser Numerico','',mb_ok + mb_iconwarning); //mensaje
  Edit1.Text := '';
  Edit1.SetFocus;
 end;
 Exit;
 end;
end;

Estos códigos los copie del foro justamente como se interpreta en los mismo para validar un Edit, el detalle esta que no importa si ingreso un numero o una letra siempre me arroja el mismo mensaje por lo tanto la condición no se esta cumpliendo correctamente.

Si ingreso aaa me arroja el mensaje ( Y esta bien así debe ser), pero si ingreso 123, También me arroja el mensaje y no debería ser.

Me gustaría poder conseguir una respuesta concreta ya que he buscado en el foro este tema y es algo complejo en realidad.

También me gustaría que corrigieran los códigos que expuse, he leído post son el MaskEdit, (pero no se como se utiliza) si hay un método mejor al que estoy haciendo seria bueno saberlo.

Gracias por la ayuda que me puedan aportar. Saludos....

Una vez resuelto este hilo me gustaría que tuviera la coletilla de [SOLUCIONADO] porque la verdad que tengo horas buscando y normalmente son los mismos post

Enan0 07-11-2011 20:57:26

simplemente en el evento OknKey press del Edit pones este codigo

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in [#8,',','.','0'..'9']) then
    key:=#0;
end;

con lo que si lo que se ingresa no es Ni un numero, Ni BackSpace o punto o coma. le asigna vacio a la variable KEY y por ende no hace nada


saludos

L3st4t 07-11-2011 21:40:01

Comprendo Pero...
 
Gracias Enan0, pero una pregunta si lo quiero hacer desde un boton dentro de un solo procedimiento, como haría?

Saludos

Enan0 07-11-2011 21:52:17

Y mira dentro del evento OnClick deberias hacer lo siguiente

Código Delphi [-]
Function TieneLetras(s:String):boolean;
var
   Letra:boolean;
   I:Integer;
begin
   letra:=false;
  While (I<=Length(s)) and not lentra do
      letra:= s[i] in [',','.','0'..'9'];

end;
.....
if tieneLetras(edit1.text) then begin
  Showmessage('Debe ingresar solo letras');
  edit1.setfocus;
end;


Con esto deberia funcionar. no lo prove porque no estoy con delphi en este momento. pero es mas o menos esa la idea.

de todos modos yo soy participe de hacer la validacion en el momento que se van pulsando las teclas. ya que evitas que se pase algun caracter o que luego de realizar una carga de varios Edits haya que volver a corregir uno.

saludos


La franja horaria es GMT +2. Ahora son las 18:43:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi