Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar que el edit contenga 12,13 o 14 digitos (https://www.clubdelphi.com/foros/showthread.php?t=61681)

Lizette 18-11-2008 07:25:45

Validar que el edit contenga 12,13 o 14 digitos
 
Hola, tengo un problema con la validación de un edit, éste edit contendrá el código de barras del producto, los cuales regularmente tienen 12,13 o 14 digitos, utilizo éste código, y sólo me acepta 12 digitos y me anula la tecla, qué condición puedo usar, también le intente con
EditCve.text>11 and EditCve.text<15, y de la misma manera sólo me acepta 12 digitos, a lo cual me resta sólo dar enter..

Gracias por sus aportaciones..

Código Delphi [-]

procedure TfrmProductoAdd.EditCveKeyPress(Sender: TObject; var Key: Char);
begin
if ((Length(EditCve.Text)=12)or(Length(EditCve.Text)=13)
 or(Length(EditCve.Text)=14)) and (Key<>Char(8)) and (Key<>Char(13))then
   Key:=Char(0);
 if (Key=Char(13)) and ((Length(EditCve.Text)=12)
 or(Length(EditCve.Text)=13)or(Length(EditCve.Text)=14)) then
 begin
  Key:=Char(0);
  EditDes.SetFocus;
 end;
end;

Lepe 18-11-2008 09:44:37

Quizás sea mejor controlar sólo los casos de error, en lugar de intentar validar los casos aceptables:
Código Delphi [-]
procedure TfrmProductoAdd.EditCveKeyPress(Sender: TObject; var Key: Char);
  var l :integer;
begin
l := Length(EditCve.Text); 
 if (Key<>Char(8)) and (Key<>Char(13) and (l >14)then
   Key:=Char(0);
 if (Key=Char(13)) then
 begin
   if (l <12) or (l>14) then  // mostrar aviso
     ShowMessage('Atención la longitud no está en el rango 12-14, longitud actual:'+ inttostr(l);
  Key:=Char(0);
  EditDes.SetFocus;
 end;
end;
Si tienes un "or l =12" siempre entrará aunque el usuario quiera añadir más números.

Saludos

Lizette 18-11-2008 09:47:10

Gracias Lepe por la observación.. Saludos

pablopessoa 19-11-2008 12:07:00

Capas lo que digo es una burrada, pero si solo tenes que chequear la cantidad de digitos, el edit almacena un string, y por lo tanto podes preguntar el largo que tiene usando length, si no queres que se ingrese mas de 14 digitos, en el onChange del edit controlas que si el largo es igual a 14, pones el edit.enabled=false y listo.
Espero que te sirva, saludos!


La franja horaria es GMT +2. Ahora son las 06:24:34.

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