FoxPro/Visual FoxPro - problemas con on shutdown y formas

 
Vista:

problemas con on shutdown y formas

Publicado por ramon (47 intervenciones) el 01/04/2006 06:16:40
estoy probando con el siguiente programa

LOCAL loform
PUSH MENU _MSYSMENU
SET SYSMENU TO
loform=CREATEOBJECT('form2')
loform.CAPTION='forma1'
loform.SHOW

ON SHUTDOWN fvsalida()
READ EVENTS
loform=NULL
ON SHUTDOWN
POP MENU _MSYSMENU

PROCEDURE fvsalida
DO WHILE TYPE('_screen.activeform')='O' AND !ISNULL(_SCREEN.ACTIVEFORM)
WAIT WINDOW _SCREEN.ACTIVEFORM.CAPTION
_SCREEN.ACTIVEFORM.RELEASE
doevents
ENDDO
CLEAR EVENTS

DEFINE CLASS form1 AS FORM
AUTOCENTER=.T.
ALWAYSONTOP=.T.
ADD OBJECT btn_newform AS COMMANDBUTTON WITH ;
TOP=50,;
LEFT=50

PROCEDURE btn_newform.CLICK
LOCAL loform
loform=CREATEOBJECT('form1')
WITH loform
.CAPTION=THISFORM.CAPTION+'-1'
.WIDTH=THISFORM.WIDTH-20
.HEIGHT=THISFORM.HEIGHT-20
ENDWITH
loform.SHOW(1)

ENDDEFINE

DEFINE CLASS form2 AS form1
ADD OBJECT btn_salida AS COMMANDBUTTON WITH ;
TOP=100,;
LEFT=50

PROCEDURE QUERYUNLOAD
CLEAR EVENTS

PROCEDURE btn_salida.CLICK
CLEAR EVENTS

ENDDEFINE

si lo ejecuto e inmediatamente hago click en el boton cerrar del la ventana principal de fox
el programa termina normal pero si tengo mas de una forma desplegada solo se libera la ultima forma desplegada y luego se cicla en el procedumiento fvsalida porque no libera las siguientes formas, alguien sabe porque y como solucionar esto?
les agradesco de antemano su ayuda
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:problemas con on shutdown y formas

Publicado por Roman Suazo (2723 intervenciones) el 01/04/2006 07:50:10
EL DO WHILE cambialo por esto:

iNumeroFormas=_SCREEN.FORMCOUNT

FOR i=iNumeroFormas TO 1 STEP -1
_SCREEN.FORMS(i).RELEASE
ENDFOR

No creo que ocupes el DOEVENTS. Por que decidiste usarlo?
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:problemas con on shutdown y formas

Publicado por ramon (47 intervenciones) el 02/04/2006 06:32:31
Muchisimas gracias, utilize tu codigo en el programa de prueba y funciono muy bien
de hecho estoy haciendo pruebas para cerrar todas la formas desplegadas en un momento determinado cuando el usuario hace click en el boton cerrar de la pantalla principal y como algunas formas tendran que hacer una limpieza de entorno les voy a agregar un procedimiento general llamado fvlimpieza
y utilizar _screen.forms(i).fvlimpieza() en el procedimiento fvsalida y como no se que codigo vaya a poner ahi decide utilizar do events por si necesito utilizar cosas como keyboard {...} (espero tus comentarios al respecto)
en fin no se si realmente lo utilize, solo estoy tratando de enterder el funcionamiento de las formas en visual foxpro v6.0 que es la que tengo y como es muy estable , por lo menos para mi es la que pienzo seguir usando supliendo sus deficiencias con llamadas a windows api, para asi aprender dos cosas a la vez( la verdad es que no me alcanza el presupuesto para obtener la version 9.0 espero algun dia hacerlo), otra vez muchas gracias roman
por cierto tambien utilize lo siguiente:
for each loform in _screen.form
lform.release
endif
pero se comporta un poco estraño, tengo que presionar dos veces el boton cerrar para que cierre todas la formas, espero algun dia saber porque
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:problemas con on shutdown y formas

Publicado por Roman Suazo (2723 intervenciones) el 02/04/2006 09:16:27
Tengo entendido que el DOEVENTS es util cuando quieres procesar eventos del windows que fueron postergados para no interrumpir un codigo que se estaba ejecutando. En tu circumstancias no creo que sea necesario aunque no creo qe afecte demasiado....
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