Como escapar del evento Valid de un text haciendo click en la X de cerrar form?

923 views
Skip to first unread message

Fox Learner

unread,
Apr 6, 2012, 4:34:55 PM4/6/12
to Comunidad de Visual Foxpro en Español
Si, eso, Como escapar del evento Valid de un text haciendo click en la
X de cerrar form?

Parece que el valid tiene prioridad sobre el evento release y nomas no
te deja cerrar el form.

Alguna rutina "de escape" de ese triste valid jeje?...

Saludos!

Fox Learner

unread,
Apr 6, 2012, 5:33:59 PM4/6/12
to Comunidad de Visual Foxpro en Español
Me respondo a mi mismo ya que los demas parecen estar disfrutando de
la "semana sangana" en alguna playita jeje:

http://www.portalfox.com/index.php?name=News&file=article&sid=931

Lo malo que viene con clases y así casi no le entiendo.

Saludos!

Fox Learner

unread,
Apr 6, 2012, 5:43:01 PM4/6/12
to Comunidad de Visual Foxpro en Español
Super!! Ya lo encontré. Me temo que tendré que volver al lostfocus..

http://groups.google.com/group/publicesvfoxpro/browse_thread/thread/f91a8fd9086225f8

Saludos!

Guillermo MDQ

unread,
Apr 6, 2012, 5:50:11 PM4/6/12
to publice...@googlegroups.com
Para salir con la X del valid solo tenes que poner esto:

     IF Thisform.ReleaseType>0
        Thisform.Release
     ENDIF

Saludos
Guillermo

Fox Learner

unread,
Apr 6, 2012, 6:38:58 PM4/6/12
to Comunidad de Visual Foxpro en Español
Gracias Guillermo MDQ. No sé en qué evento del form lo usas, ya que a
mí no me funciona, ni en init, en el mismo valid.

Al parecer, segun el error, no puedes llamar a un evento de mayor o
menor rango desde el valor. Y por lo tanto, entiendo que no puede
llamar al evento release desde el mismo valid.

Lo que puse de mientras es Return -1 para que regrese a un control
antes en el orden de tabulación ya que con return 0 vuelve al mismo
control obligando al usuario teclear lo que sea para que se cierre con
la X.

Probé poniendo que presionen la tecla escape con lastkey, pero al
parecer, en el orden de eventos, valid es mayor que keypress y por lo
mismo no deja hacer un release dentro del keypress.

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=26&allpages=1&theme=Printer

Saludos!

Guillermo MDQ

unread,
Apr 6, 2012, 6:56:52 PM4/6/12
to publice...@googlegroups.com
Lo tenes que poner en el evento Valid del textbox que queres validar.
Tiene que estar antes de que empieces la validacion.

Por ejemplo si tienes un textbox que no permite un valor menor que uno seria asi:

WITH Thisform
     IF .ReleaseType>0
        .Release
     ENDIF
ENDWITH

If This.value<1
   return 0
endif

Probalo que funciona OK


Saludos
Guillermo





El viernes, 6 de abril de 2012 17:34:55 UTC-3, Fox Learner escribió:

Victor Espina

unread,
Apr 6, 2012, 7:20:49 PM4/6/12
to publice...@googlegroups.com
Que pedazo de articulo.  Simplemente excelente.  mas de 15 anos con VFP y no conocia la propiedad ReleaseType!!!  Y el uso de MDOWN() estuvo interesante tambien, asi como WONTOP().

Gracias por la referencia

Victor Espina

foxteban

unread,
Apr 6, 2012, 7:57:25 PM4/6/12
to Comunidad de Visual Foxpro en Español
Hola Fox LEraner

Proba de poner en el valid del textbox algo asi

RETURN THIS.VALUE

Alli vuelve al control y podes salir con el (x)
Saludos
Esteban

Fox Learner *

unread,
Apr 6, 2012, 7:58:17 PM4/6/12
to publice...@googlegroups.com
Si Guillermo MDQ. Sí funciona la rutina de escape para el Valid así como comentas.

Hice pruebas con un formulario nuevo y aunque estoy usando campos de tipo fecha, no era por ahi el problema.

El problema es que "deje tu codigo" en el release del form y me marcaba error de anidamiento y el error clasico del valid.

Pero, sí, efectivamente se puede salir del valid como mencionas.

Otro tip para el manual, que no viene en la ayuda jeje

Saludos!
escaparvalid.scx

Fox Learner

unread,
Apr 6, 2012, 8:09:30 PM4/6/12
to Comunidad de Visual Foxpro en Español
Foxteban, la del return this.value no funciona para mi caso. Gracias
de todas formas. Saludos!

Guillermo MDQ

unread,
Apr 6, 2012, 8:11:03 PM4/6/12
to publice...@googlegroups.com
Normalmente cuando estoy en modo edicion desactivo la X con la propiedad Closable=.F. del Form.
Y solo permito que salgan con el boton Cancelar.

Para poder hacerlo desde los textbox que estoy editando pongo este codigo en el evento valid y suponiendo que el boton Cancelar se llama cmdCancelar:

IF Mdown()
   loObj=SYS(1270)
   IF Vartype(loObj)='O' AND loObj.Name="cmdCancelar"
      loObj = NULL
      RETURN
   ENDIF
ENDIF



El viernes, 6 de abril de 2012 17:34:55 UTC-3, Fox Learner escribió:

Fox Learner

unread,
Apr 6, 2012, 8:24:08 PM4/6/12
to Comunidad de Visual Foxpro en Español
Si pues.. ya me di cuenta que no deja salir con un boton Salir que
tenga un thisform.release(). Solo con la X.

En fin, a seguir estudiando eso de los objetos jeje

Gracias y Saludos!

Daniel Sánchez

unread,
Apr 6, 2012, 9:36:49 PM4/6/12
to publice...@googlegroups.com
Como comentan, muchos años y tampoco sabia como evitar validar cuando el usuario presiono el botón cancelar o la x de cerrar formulario, como dicen esta de pelos, no nos cansamos de aprender algo más de nuestro querido zorro.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Walter R. Ojeda Valiente

unread,
Apr 6, 2012, 9:48:07 PM4/6/12
to publice...@googlegroups.com
Me extraña Daniel que digas eso.

Además que esa pregunta ya se había hecho tiempo atrás y yo la había respondido.

Saludos.

Walter.




Date: Fri, 6 Apr 2012 20:36:49 -0500
Subject: Re: [vfp] Re: Como escapar del evento Valid de un text haciendo click en la X de cerrar form?
From: resets...@gmail.com
To: publice...@googlegroups.com

Daniel Sánchez

unread,
Apr 6, 2012, 9:53:32 PM4/6/12
to publice...@googlegroups.com
Ups, entonces me falla la memoria Walter, pero esta vez ya lo apunte grabe en mi carpeta de archivos de vfp, para cuando la requiera.

Walter R. Ojeda Valiente

unread,
Apr 6, 2012, 10:18:11 PM4/6/12
to publice...@googlegroups.com
Me refería a que es algo muy fácil de hacer y que me extrañaba que siendo tú alguien quien tanto conoce de VFP no lo supieras.

Saludos.

Walter.





Date: Fri, 6 Apr 2012 20:53:32 -0500

Subject: Re: [vfp] Re: Como escapar del evento Valid de un text haciendo click en la X de cerrar form?
From: resets...@gmail.com
To: publice...@googlegroups.com

ZeRoberto

unread,
Apr 7, 2012, 3:59:25 PM4/7/12
to publice...@googlegroups.com
Yo no valido por control, valido al finalizar cuando voy a ingresar los datos a la tabla.
 
Saluds

Victor Espina

unread,
Apr 7, 2012, 5:55:05 PM4/7/12
to publice...@googlegroups.com
Si, yo tambien hago lo mismo roberto.  Es menos estresante para el usuario y mas facil de programar y abstraer.  Creo que hay pocas que frustran mas a un usuario que un sistema diciendole a cada paso "la cagaste!".

Victor Espina


On Saturday, April 7, 2012 2:59:25 PM UTC-5, Roberto Reátegui Kanashiro wrote:
Yo no valido por control, valido al finalizar cuando voy a ingresar los datos a la tabla.
 
Saluds

El 6 de abril de 2012 21:18, Walter R. Ojeda Valiente <wr...@hotmail.com> escribió:
Me refería a que es algo muy fácil de hacer y que me extrañaba que siendo tú alguien quien tanto conoce de VFP no lo supieras.

Saludos.

Walter.





Date: Fri, 6 Apr 2012 20:53:32 -0500

Subject: Re: [vfp] Re: Como escapar del evento Valid de un text haciendo click en la X de cerrar form?
From: resets...@gmail.com

Guillermo Gimenez

unread,
Apr 7, 2012, 6:35:06 PM4/7/12
to publice...@googlegroups.com
Buenas tardes, recuerdo intentando bajar un driver de una impresora nuevita nuevita... entonces hay que ir a la parte de controladores despues busca el modelo de la impresora despues quien es el fabricante (desarrollador) del sistema operativo microsoft (en mi caso), despues cual es el sistema operativo WindowsXP (en mi caso) despues que version Professional (en mic caso) despues de cuantos bits es el s.o. 32 bits (en mi caso), cuando por fin termine (10 mins) me habilito el boton Buscar Driver (no lo voy a negar... me emocione!! despues de tantos pasos), y me apareció un mensaje "No se encuentra el driver para el S.O. solicitado"... de ahi aprendí que lo mejor es que le avises al operador cada error en cada paso, para que no llegue hasta el final y lo vuelva al primer paso... es deprimente... aunque lo de no validar un campo cuando el usuario presione ESC o cierre el form es una gran idea!!...
 
Guille
 

--- El sáb 7-abr-12, Victor Espina <vesp...@gmail.com> escribió:

Antonio Meza

unread,
Apr 9, 2012, 1:12:03 PM4/9/12
to publice...@googlegroups.com
Hola!!!

Hay muchas situaciones en las que no se recomienda validar al final todo, un ejemplo el catalogo de clientes, normalmente yo verifico el RFC si ya fue capturado para avisarle al usuario, si no imaginen que captura todo de nuevo y al final le digo que ya existia jajaj solo es un ejemplo de x situacion.

Para ello utilizo el VALID() del textbox, para que al teclear el usuario pueda saber si el rfc ya fue registrado y por lo tanto el cliente ya existe, pero como todos sabemos el evento VALID() siempre se ejecuta al querer salir del focus del control, por ello muchos programadores usan el LOSTFOCUS, por desconocimiento de lo poderoso que es el valid.

En mi caso utilizo una propiedad ya sea de mi clase base textbox o una del formulario, como saben tenemos el evento InteractiveChange del texbox, este se ejecuta cada vez que el usuario presiona una tecla, por lo que lo utilizo para saber si el usuario intenta realizar algo sobre el textbox o solo esta pasando por el, de esta forma mato 2 pajaros de un tiro jajaj evito que se ejecute el valid si no se realizo ninguna accion sobre el textbox y permito salir al usuario si este desea cerrar el formulario..

InteractiveChage
this.PropiedadCambioValor = .t.

valid()

If this.PropiedadCambioValor
     this.PropiedadCambioValor = .f.
     * Valido lo que necesito
ENDIF

De esta sencilla forma puedo saber si el usuario escribio algo en el textbox para ser validado, si solo paso el cursor por el textbox pues que no valide nada.

Espero me haya explicado y les sirva como referencia.

saludos
Antonio Meza

Victor Espina

unread,
Apr 9, 2012, 3:30:48 PM4/9/12
to publice...@googlegroups.com
Tienes razon en eso Antonio.  Pero la idea es usar validacion en sitio SOLO cuando sea conveniente hacerlo de cara a la experiencia de usuario. Otro ejemplo de estos son los campos donde se pide un codigo; en esos casos el codigo debe validarse inmediatamente, pero yo prefiero permitir que el usuario continue (a conciencia de que ese codigo no existe y que no podra grabar hasta que ponga uno correcto) a obligarlo a quedarse ahi hasta que ponga un valor correcto.

Supongo que al final del dia, debe haber razones en pro y contra para ambos metodos y lo mejor sera una solucion que este en el medio. :

Saludos

Victor ESpina

Fox Learner

unread,
Apr 9, 2012, 4:11:52 PM4/9/12
to Comunidad de Visual Foxpro en Español
Este tema del valid ya se analizó y una de las conclusiones fue que
era una buena práctica hacer lo siguiente:

1. Validar cada dato para controlar la "integridad" de la información
que se ha de grabar en la tabla, para evitar errores posteriores como
el no encontrar datos en una consulta porque "habia un caracter"
extraño antes del dato, etc.
2. Validar datos obligatorios necesarios antes del grabado final de
datos.

Incluso algunos dice que ponen "un asterisco" como información al
usuario indicando que los campos con asterisco son obligatorios,
imitando la práctica de los sistemas web.

http://groups.google.com/group/publicesvfoxpro/browse_thread/thread/4cbdcfe4d3ef6673/aa55537ef2035c4c?lnk=gst&q=validar+buena+practica#aa55537ef2035c4c


Saludos!

Antonio Meza

unread,
Apr 9, 2012, 4:13:00 PM4/9/12
to publice...@googlegroups.com
Totalmente de acuerdo VIctor!!!

Por ello siempre en mis programas realizo la validación de lo que realmente considero importante en cada campo o lo dejo en la validación final que hacen mis programas cuando el usuario va a guardar la informacion.

Pero el tema del valid de que muchos no saben que este se ejecuta cuando el control tiene el focus y se intenta salir de este, ya sea por querer cerrar el formulario o por el simple hecho de cambiarse de control., y para ello en mi caso particular hago lo que mencione lineas abajo y sirve para ambas situaciones, tanto para permitir salir sin validar o para cambiarse de control.

saludos

Fox Learner

unread,
Apr 9, 2012, 4:30:13 PM4/9/12
to Comunidad de Visual Foxpro en Español
En mi caso, por tratarse de validar fechas, si era necesario que el
valid fuera estricto, ya que la consulta que sigue arrojaría datos
incorrectos si la fecha no se valida correctamente o arrojaria una
consulta "vacía".

La opción de que puedan cerrar con la X, es por si el usuario, en su
desesperación no ve el mensaje en la pantalla que dice "introduzca una
fecha con formato DD/MM/AAAA" y desea cerrar y reiniciar el proceso, o
si en DEMO del sistema, solo entraron a "husmear" y sería ilógico no
dejarlos cerrar y piensen que el sistema tiene "muchos errores" (es lo
que pensará un usuario común y corriente, que no sepa nada de
programación).

A veces ( o muchas veces), sucede que "al usuario también le falla su
Güindous" (su cabecita) e intentará reiniciar el proceso desde 0.

Chiste, chiste, chiste:

3 personas en un auto en medio de la selva. El carro falla:

Soluciones propuestas:

El doctor, sugiere revisar "los sintomas y cada parte del auto y
generar un diagnostico" correcto.
El ingeniero mecánico industrial, dice que "debe ser un fallo de algún
engranaje o alguna tubería".
El contador, dice que "no se estimo" la logística del viaje y se quedó
sin combustible o algun líquido necesario.
El administrador de empresas, sugiere "delegar" la función en algún
experto en mecánica y llamar al num. de asistencia técnica..

Así por el estilo, hasta que "el ingeniero en sistemas" ofrece una
gran solución:

Y... por qué no nos bajamos todos, apagamos totalmente el auto y y nos
volvemos a subir a ver si así jala?... jeje

Mario Oviedo

unread,
Apr 19, 2012, 4:38:28 PM4/19/12
to publice...@googlegroups.com
te falto el otro archivo, son dos, solo enviastes uno, por favor

Fox Learner

unread,
Apr 19, 2012, 4:41:06 PM4/19/12
to Comunidad de Visual Foxpro en Español
....??

Mario Oviedo

unread,
Apr 20, 2012, 11:54:42 AM4/20/12
to publice...@googlegroups.com
lo coloco en una forma y no entiendo que hace

Guillermo MDQ

unread,
Apr 20, 2012, 2:20:18 PM4/20/12
to publice...@googlegroups.com
Ese texto de ejemplo va en el evento valid de un textbox y sirve para poder salir del valid cuando se pulsa en el boton X del form, sin que se efectue el codigo de validacion que se haya puesto ahi.

Saludos
Guillermo
Reply all
Reply to author
Forward
0 new messages