FoxPro/Visual FoxPro - clear events

 
Vista:

clear events

Publicado por Manuel (2 intervenciones) el 31/08/2008 21:03:46
saludos
tengo un problemita con el clear events
tengo vfp9 y he creado una aplicacion de ejemplo el cual tiene solo un prg principal y un menu.mpr
el prg tiene unicamente las siguientes lineas de codigo:

ON SHUT CLEAR EVENTS
DO MENU.MPR
READ EVENTS
QUIT

al presionar en cerrar de la aplicacion, la aplicacion no termina se queda parpadeante
y lo mismo pasa si le doy Salir del menu, la opcion Salir tambien tiene el comando CLEAR EVENTS y al elegir salir tampoco termina, la aplicacion se queda parpadeando y debo valerme del administrador de tareas para terminar el programa

claro eso lo resuelvo cambiando los CLEAR EVENTS por el comando QUIT
pero me interesaba saber porque es que no sale como lo estoy haciendo alli en el ejemplo
es bastante raro quizas este obviando alguna cosa

alguna respuesta?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:clear events

Publicado por sergio (737 intervenciones) el 01/09/2008 15:23:57
ON SHUTDOWN DO CERRAR_FIN


PROCEDURE CERRAR_FIN
IF Type('_screen.activeForm')='U'
CLEAR EVENT
CLOSE ALL
QUIT
ELSE
WAIT WINDOW 'Formulario en ejecucion , No se puede salir del sistema'
ENDIF

y el clear evenet en la opcion del menu esta bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:clear events

Publicado por Manuel (2 intervenciones) el 02/09/2008 06:37:43
entiendo bien lo que dices pero esa no fue exactamente la pregunta
hagamos algo simple

voy a crear un proyecto llamado quit.pjx, el cual unicamente va a contener un solo archivo prg
llamemos a dicho archivo quit.prg
a este prg le escribo solamente las siguientes tres lineas de codigo:

ON SHUTDOWN CLEAR EVENTS
READ EVENTS
QUIT

y nada más y solo eso sera mi aplicacion
luego compilo el proyecto a ejecutable y lo ejecuto (valga la redundancia)

entonces tendre en pantalla a la aplicacion quit.exe ejecutandose
ahora quiero salir de la aplicacion y para ello apunto el puntero del mouse al boton cerrar de la ventana, osea click en la X
y apenas haga eso la aplicacion no termina y entonces parece ser que se inicia una especie de bucle infinito pues la ventana empieza a mostrarse parpadeante y la aplicacion no termina jamas
que podria estar pasando?, pues la verdad no lo se
y realmente no tengo la mas minima idea

siendo asi entonces modifico el archivo quit.prg de la siguiente forma:

ON SHUTDOWN QUIT
READ EVENTS

compilo y ejecuto, corro la aplicacion, ahora le doy click en el boton cerrar de la ventana y listo, la aplicacion termina, esto ultimo ES LO MISMO QUE TU RESPUESTA y eso esta mas que claro

lo que me intriga es solo una cosa y realmente necesito una explicacion RAZONABLE
ante todo trabajo con visual foxpro 9
y en el codigo inicial escribi:

ON SHUTDOWN CLEAR EVENTS
READ EVENTS
QUIT

esto quiere decir que si intento salir de fox, en este caso haciendo click en cerrar de la ventana, entiendo que en ese momento se ejecuta el comando especificado en ON SHUTDOWN, osea CLEAR EVENTS, entonces el READ EVENTS termina y la linea siguiente en ejecutarse deberia ser QUIT y con esto vfp deberia terminar inmediatamente y cualquier CLEAR ALL o CLOSE ALL que haga antes del QUIT sale sobrando, ya que en el QUIT, todo eso, esta implicito

pero las cosas no suceden como espero que sucedan

estoy viendo que el comando especificado en ON SHUTDOWN sí se esta ejecutando, eso lo comprobe pues puse un mensaje WAIT WINDOW despues del READ EVENTS, esto quiere decir que el CLEAR EVENTS sí tuvo efecto, entonces luego de ejecutarse el comando WAIT WINDOW el siguiente comando en ejecutarse debio ser QUIT, terminando asi la aplicacion, pero eso no sucede, osea, la aplicacion no termina
pero podria presumir que el comando QUIT sí se ejecuta pero que no logra salir por alguna razon que la verdad no entiendo, mostrando finalmente ese efecto parpadeante en la ventana de la aplicacion, y sin poder salir nunca

bueno, espero haber sido un poco mas explicito
se que puedo resolverlo con ON SHUTDOWN QUIT, pero la verdad no quiero quedarme con la duda del porqué de la otra forma no termina nunca
que es lo que pasa?, que es lo que estoy obviando y desconozco hasta el momento?, o quizas no es la manera correcta pero porque razon?, alguna explicacion de poder y como es que deberia ser y porque tambien?

en fin
saludos y gracias por sus respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar