FoxPro/Visual FoxPro - Como cerrar aplicacion y forms abiertos?

   
Vista:

Como cerrar aplicacion y forms abiertos?

Publicado por gustavo (31 intervenciones) el 19/09/2012 21:23:22
Hola estimados.
Tengo el siguiente problema, necesito cerrar mi aplicacion a determinada hora, y que se cierren los forms que pudieran estar abiertos antes de salir definitivamente de la aplicacion.

Mi aplicacion carga un form con el menu, desde el menu se accede a distintos forms (todos modales para evitar que me abran varios forms)

Coloque dos timer en el form principal, uno me avisa unos minutos antes del cierre y el otro es el que deberia cerrar todo.

El codigo que cierra todo es:

IF TIME() >= '22:00:00'
thisform.timer1.Enabled= .F.
CLOSE DATABASES ALL
SET ESCAPE On
DO WHILE _Screen.formCount > 0
_Screen.Forms(1).Release()
ENDDO
CLEAR EVENTS
QUIT
ENDIF

Este codigo se queda colgado cuando hay abierto un form modal, pero si no es modal funciona bien.
Como puedo solucionar este problema.

Gracias!
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

Como cerrar aplicacion y forms abiertos?

Publicado por Fidel (319 intervenciones) el 20/09/2012 01:29:56
Utiliza los formularios modales solamente cuando necesitas una respuesta (proceso de búsqueda, confirmación, etc.), o bien, cuando quieres mostrar ciertos datos donde por la complejidad de la consulta o por los datos que se muestras, quieres que se cierre antes de continuar con otra cosa.
Para impedir que el usuario abra dos formularios que, por cualquier motivo, pueden resultar incompatibles, usa el Skip For del menú. Los formularios principales deben ser WindowType=0
El formulario que tiene el menú, debe ser ShowWindow=2 y los restantes ShowWindow=1

En los formularios modales que queden (o en todos, si lo quieres así), coloca también un Timer.
Debes anticiparte al horario y el código de Timer Event sería más o menos
Timer1.Interval=20000 && 20 segundos
IF TIME() >= '21:59:30'
Thisform.Release
endif

En el formulario principal deberías dejar un solo Timer, con una estructura do case
do case
case Time()>='21:59:00'
* Aviso de cierre de programa
case Time()>='22:00:00'
Thisform.RutinaCierre()
endcase
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

Como cerrar aplicacion y forms abiertos?

Publicado por gustavo (31 intervenciones) el 20/09/2012 20:12:18
Gracias fidel por tu respuesta, voy a probar y te cuento como me fue.
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