Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Validar Telefono Edit! (https://www.clubdelphi.com/foros/showthread.php?t=69805)

fr3ddy 10-09-2010 02:23:28

Validar Telefono Edit!
 
Hola soy nuevo aqui! :D
Tengo un gran dilema, el detalle es que tengo un edit donde guardare un Número de telefono! y este edit solo debe permitir 10 o 13 Numeros, ningun otro caracter que no sea un numero!

Ademas, Si detecta que el numero comienza con 044 o 045 debe permitir 13 Digitos! En caso que el comienzo sea diferente de estos debe solo permitir 10

He buscado pero namas no doy :'( :confused:

Se me han agotado las ideas! Espero me puedan ayudar, Un millon de gracias anticipadas! :)

Neftali [Germán.Estévez] 10-09-2010 11:08:08

En el OnChange, OnKeyPress/OnKeyDown puedes comprobar lo que se pulsa en cada momento y lo que se lleva pulsado en el Edit.

Si la tecla no te interesa la "sustituyes" por #0, y ahí puedes controlar también los caracteres ya ya llevas pulsados.

Aquí, aquí o aquí tienes varios códigos relacionados con lo que necesitas y de cómo utilizar los eventos.

fr3ddy 13-09-2010 19:24:34

SI lo he visto pero aun no me queda claro!
Hice un intento con el maskEdit pero aun tengo un problema, necesito que cuando sean Celular empieze forzozamente con 045 o 044 Pero no logro dar!

Ya trate con un Edit y nada :S Todos usan codigos de #45 o #8 y asi :S

Tendras un codigo de ejemplo :'( Ya no doy más!
:confused:

escafandra 14-09-2010 18:28:13

Código:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
    if(Key < '0' || Key > '9') Key = 0;
    if(!strncmp(Edit1->Text.c_str(), "044", 3) || !strncmp(Edit1->Text.c_str(), "045", 3))
      Edit1->MaxLength = 13;
    else
      Edit1->MaxLength = 10;
}


Saludos.

fr3ddy 14-09-2010 22:48:32

Muchas Gracias por respnder!

Me marca un error de operador :S y de types, Estoy usando Delphi 7 :confused:


He tratado el maskedit y Edit :S Pero hasta ahora nada he logrado!:(

Mil gracias anticipadas!

maeyanes 14-09-2010 23:17:06

Hola...

¿Si estás usando Delphi 7, por que pusiste tu duda en la sección de C++ Builder? Es por eso que te pusieron código en C++ y si solo haces copy-paste pues obvio que tendrás varios errores de sintaxis...

Checa en mi firma el link que dice: Lee la Guía de Estilo...



Saludos...

fr3ddy 15-09-2010 17:01:47

Muchas Gracias por responder!

Realmente soy nuevo aqui! y al momento en que puse el tema!
Busque uno que dijese Delphi pero no lo encontre :confused:

Asi que supuse que este funcionaria (Mi error) con respecto al copy-paste. Cierto he usado codigo de la web pero aun asi, he leido sobre las instrucciones y demas he declarado las variables que me pide y todo!

He logrado validar unicamente numeros mas no en el orden que lo necesito ni limitanto a que sean 10 o 13 ni mas ni menos! Opte por usar dos maskedit diferentes uno para Telefono y otro para Celular más, limite los caracteres maximos (Muy basico para uds supongo :P) pero no he localizado como el minimo :S



Nota: Podrias ayudar como colocar mi tema en el foro correcto :rolleyes:

Gracias*N

chingolo 16-09-2010 17:04:05

esto en tu onkeypress del edit, para que admita solo numeros
Código Delphi [-]
  if ( StrScan('0123456789',Key) <> nil ) or 
     ( Key = Char(VK_BACK) ) then { BackSpace Key }
  begin 
    {Aqui tu tratamiento normal del evento}
  end 
  else 
    Key := #0; //acordate de esto porq sino te puede generar error porq le seguis pasando el evento ojo
esto seria si es 044 o 045, pero en tu keyup porq asi el numero ya se ingreso en el edit, lo q hago es que cuando se ingresen los tres primeros caracteres recien ahi se modifique la long, tambien podes controlar la entrada forzada de caracteres si se selecciona celular
Código Delphi [-]
if (Length(edit1.text)>0 and Length(edit1.text)<4) then
if ((StrComp(PChar(Edit1.Text), PChar('044'))=0) or (StrComp(PChar(Edit1.Text), PChar('048'))=0)  then
begin
{aca cambia la longitud maxima a 13}
end;

Neftali [Germán.Estévez] 16-09-2010 17:16:23

Por favor, utilizad los TAG's cuando añadáis código a los mensajes.


La franja horaria es GMT +2. Ahora son las 10:42:34.

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