[VFP] ON SHUTDOWN cerrar formularios multiples

834 views
Skip to first unread message

OMAR ROJAS

unread,
Feb 20, 2012, 7:35:33 PM2/20/12
to Comunidad de Visual Foxpro en Español
Hola a todos soy nuevo en este foro y quisiera preguntarles si alguien
alguna vez tuvo alguna experiencia con el comando ON SHUTDOWN, les
explico hace un tiempo atras tenia un sistema que funcionaba en
pequeñas redes que contaban con UPS y con sus correspondientes
software es decir se cortaba la energia electrica y pasado un minuto
el winXP iniciaba su apagado pero si los usuarios estaban utilizando
una aplicacion en VFP en donde tengo el siguiente esquema de
formularios:
FORMPRINCIPAL (con menu) ---> FACTURACION --->BUSCARCLIENTE

--->BUSCARPRODUCTO

--->al hacer Click en boton grabar comprobante lo primero que hace es
entrar en un bucle donde no sale hasta que obtiene el nro de factura
que no exista es decir muestra un formulario modal donde el usuario
debe confirmar el ultimo numero de factura seguidamente se busca en la
tabla que el numero no exista para aceptarlo o si el usuario decide
con F9 cancela la operación

DO WHILE .T.
&&muestra un formulario modal donde pide un numero al usuario
WITH THISFORM._XNGET
.ENABLED=.T.
.VISIBLE=.T.
.SHOW()
ENDWITH
&& si se presiono F9 se cancela el comprobante
IF LASTKEY()==-8
_xcancel=.T.
EXIT
ENDIF
IF THISFORM._XNGET.EDT_NCOMPR.VALUE<=0
MESSAGEBOX( [NRO NO VALIDO!], 16, [ERROR] )
LOOP
ENDIF
_ncompr=STR(THISFORM._XNGET.EDT_SERIE.VALUE,
3,0)+STR(THISFORM._XNGET.EDT_NCOMPR.VALUE,6,0)
GO TOP
IF !SEEK( _ncompr )
EXIT
ENDIF
MESSAGEBOX( [NRO. YA EXISTE], 16, [ERROR] )


ENDDO
IF _xcancel &&si se cancelo el comprobante
MESSAGEBOX( [CANCELED BY USER], 64, [WARNING] )
THISFORM.XDRESET()
THISFORM.RELEASE()
RETURN
ENDIF

pues precisamente en este punto no logro destruir o cerrar los
formularios sin recibir errores cuando el evento ON SHUTDOWN es
capturado.

Si alguien tiene alguna idea o experiencia con este comando les
agradeceria sus comentarios para poder programar mas robusto mis
sistemas.

Pd en los formularios simples es decir en aquellos en donde no
trabajen multiples formularios no tengo este problema.

Gracias de todos modos

Marco Plaza

unread,
Feb 20, 2012, 8:13:31 PM2/20/12
to Comunidad de Visual Foxpro en Español
Hola, debes tener un programa que se ejecute para cerrar todos los
formularios abiertos y luego ejecute clear events.

ej.
on shutdown do cerrarTodo

***********************
cerrarTodo.prg:
***********************
on shutdown

for each formulario in _Screen.Forms
formulario.release()
endfor

clear events

*-----------------------------


Marco Plaza






Debes tener una rutina que recorra la coleccion de formularios
abiertos y les vaya haciendo release()

TheNewInquirer

unread,
Feb 20, 2012, 11:10:59 PM2/20/12
to Comunidad de Visual Foxpro en Español
Revisa este articulo de Mike Lewis que recomienda el maestro Luis
María en Portalfox para entender que sucede con Shut Down:

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=47

Saludos!
Reply all
Reply to author
Forward
0 new messages