Validar control TextBox mediante evento Keypress

771 views
Skip to first unread message

Integral

unread,
Feb 19, 2016, 1:38:40 PM2/19/16
to Mundo Visual FoxPro
Que tal Amigos :

Estoy tratando de validar un campo de tipo caracter dentro de un control TextBox, Dicho campo sirve para ingresar el Nro.. de Placa del Vehiculo.

El sistema debe validar y mostrar un mensaje de error en los 2 casos siguientes :

1) Que los 6 digitos sean solo numeros

2) Que los 6 digitos sean sobre Letras....

Aqui el codigo que estoy empleando pero no funciona segun lo esperado.

IF BETWEEN(nKeyCode,ASC("0"),ASC("9")) 
  WAIT WINDOW "Número de la Placa incorrecto" TIMEOUT .5
  ? CHR(7) 
  RETURN .F. 
ENDIF 

IF nKeyCode <> 13
IF BETWEEN(nKeyCode ,65,127) .AND. nKeyCode <> 32 
        WAIT WINDOW "Número de la Placa incorrecto" TIMEOUT .5
        RETURN .F. 
ENDIF  
ENDIF

El Nro. de placa contiene letras y numeros 

Agradezco vuestra ayuda.

Saludos,

INTEGRAL

Fidel Charny

unread,
Feb 19, 2016, 3:42:17 PM2/19/16
to Mundo Visual FoxPro
En Argentina tenemos para autos y camiones tres Alpha + tres digits.
WITH This.TxtPlaca
         .InputMask="UUU999"
         .MaxLength = 6
ENDWITH
En la validación se verifica que len(trim(this.txtPlaca.Text)) = 6

HernanCano

unread,
Feb 19, 2016, 3:48:17 PM2/19/16
to Mundo Visual FoxPro

En el foro "Comunidad de Visual Foxpro en Español - Validar dato en control TextBox" hay varias respuestas. Comprueba las respuestas que se te dan; si no cumplen informa por qué, de manera que se sepa cómo continuar con la guía.

La respuesta que te dio Jorge no es para que la uses como única solución a todo lo que preguntas: es para que la combines con las demás y verifiques tú mismo qué tanto se acerca a la solución.

Carlos Miguel FARIAS

unread,
Feb 19, 2016, 4:43:25 PM2/19/16
to mundovisualfoxpro
La validación para lo que indicas, debería hacerse en el evento valid del campo y no en el keypress, porque al entrar el primer caracter, siempre va a ser o numérico o alfabético y te daría error.
Lo que no entiendo bien es que los 6 dígitos sean sobre letras (si son dígitos no son letras)

lo que haría, aproximadamente:

FUNCTION ValidaPatente(tcPatente)
   IF LEN(tcPatente) != 6
      WAIT WINDOW "Patente incompleta, faltan/sobran caracteres" NOWAIT
      RETURN 0
   ENDIF
   LOCAL lbHayLetras, lbHayNumeros AS BOOLEAN, lc AS STRING
   
   STORE .F. TO lbHayLetras, lbHayNumeros && = toman valor .F. en LOCAL
   FOR I = 1 TO 6
      lc = SUBSTR(tcPatente, I, 1)
      DO CASE
      CASE ISALPHA(lc)
         lbHayLetras = .T.
      CASE ISDIGIT(lc)
         lbHayNumeros = .T.
      OTHERWISE
         WAIT WINDOW "Patente incorrecta, hay caracteres extraños" NOWAIT
         RETURN 0
      ENDCASE
   ENDFOR
   IF lbHayLetras AND lbHayNumeros
      RETURN 1 && hay letras y números
   ENDIF
   WAIT WINDOW "Patente incorrecta, son todos " + IIF(lbHayLetras, "letras", "números") NOWAIT
   RETURN 0
ENDFUNC

La solución de Fidel es más elegante pero "máscara". Feliz Viernes
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe, 

El 19 de febrero de 2016, 17:48, HernanCano <jherna...@gmail.com> escribió:

En el foro "Comunidad de Visual Foxpro en Español - Validar dato en control TextBox" hay varias respuestas. Comprueba las respuestas que se te dan; si no cumplen informa por qué, de manera que se sepa cómo continuar con la guía.

La respuesta que te dio Jorge no es para que la uses como única solución a todo lo que preguntas: es para que la combines con las demás y verifiques tú mismo qué tanto se acerca a la solución.

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Integral

unread,
Feb 20, 2016, 12:36:19 PM2/20/16
to Mundo Visual FoxPro

Gracias amigos les agradezco por sus comentarios y sugerencias...

Amigo HERNAN ya respondí en el otro foro de las observaciones presentadas.

Para el amigo MIGUEL hice una prueba con el código expuesto y hace una validación generalizada y también invalida cuando el ingreso de la placa es Correcto...

Gracias nuevamente,

INTEGRAL

Carlos Miguel FARIAS

unread,
Feb 20, 2016, 4:51:32 PM2/20/16
to mundovisualfoxpro
No esta mál que no funciones, es para que veas como corregirlo

--

Jorge Benitez

unread,
Feb 21, 2016, 9:59:13 AM2/21/16
to mundovis...@googlegroups.com
NO DEBERIA SER MUCHO PROBLEMA YA QUE NO TENDRIAS QUE VALIDAR EL FORMATO.
EN TIEMPO DE DISEÑO SELECCIONAS EL CONTROL, LUEGO VAS A LA SOLAPA DATA Y EN INPUT MASK PONES AAA999. ESTO FUERZA A QUE LA ENTRADA SEA 3 LETRAS Y 3 NUMEROS EN ESE ORDEN. SOLO DEBES CHEQUEAR QUE LA LONGITUD INGRESADA SEA LA CORRECTA (6 EN TU CASO). 
LO HACES EN VALID
IF LEN(THIS.VALUE)<6
MESSAGEBOX(".....................")
RETURN 0
ENDIF

Integral

unread,
Feb 21, 2016, 1:38:44 PM2/21/16
to Mundo Visual FoxPro

Gracias amigo por sus comentarios...

Estimado Amigo JORGE :

La idea que planteas es magnifica coincide con lo sugerido por el amigo FIDEL.

El detalle es el siguiente :

Aqui en el PERU no hay un patrón estandar como en ARGENTINA aquí la mayoría de autos tienen A9A999 y ni que decir de la placa de los MotoTaxis es de 7 caracteres 99AAAAA

Ahora bien estoy tratando de utilizar un solo control TextBox para todos los números de Placas de los diversos vehiculos...

Saludos,

INTEGRAL

El viernes, 19 de febrero de 2016, 13:38:40 (UTC-5), Integral escribió:

Jorge Benitez

unread,
Feb 21, 2016, 3:15:33 PM2/21/16
to mundovis...@googlegroups.com
Ok.. pero no lo veo tan dificil. Como sabras esto no admite ambiguedades y con solo saber todos los posibles formatos que puede tener una placa estaria bien... cuando validas preguntas si coincide con alguno de esos formatos ..si no es asi el ingreso no es valido

--

Carlos Miguel FARIAS

unread,
Feb 21, 2016, 5:13:55 PM2/21/16
to mundovisualfoxpro
En fox, podes validar cualquier cosa con expresiones regulares, ver:
Las expresiones regulares son difíciles de empezar a utilizar, pero no te hagas problema que después es peor ;-D.
En realidad es una forma simbólica de representar que caracter tiene que en cada posición, pero que permite repetir el criterio para caracteres seguidos, condicionales, etc.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe, lo único bueno que salió del lado oscuro fueron la expresiones regulares.
Reply all
Reply to author
Forward
0 new messages