Cerrar todos los formularios abiertos

902 views
Skip to first unread message

Wilzy G

unread,
May 2, 2017, 1:56:20 PM5/2/17
to Comunidad de Visual Foxpro en Español
Hola a todos, como se puede cerrar todos los formularios que estan abiertos?? O al menos lanzar un mensaje de que hay formularios abiertos.

El problema es lo siguiente:

- Cuando realizo backups cierro todas las tablas en uso.

- Tengo formularios que tienen grids y utilizan cursores para mostrar los datos en los grids, y cuando hago backup mientras dichos formularios estan abiertos... desaparecen los grids, y al tratar de usar el formulario me lanza errores.

Por eso me gustaría cerrar todos los formularios que pudieran estar en uso antes de hacer el backup, o al menos avisar pidiendo que se cierren los formularios antes de realizar el buckup.

Así cierro las tablas y demás antes de realizar el backup.
Con algunos formularios abiertos me muestra el mensaje de que hay archivos en uso, pero con los formularios que comenté no funciona.


*FUNCTION respaldo
CLOSE INDEXES
CLOSE DATABASES &&cerramos todas las bases de datos
CLOSE TABLES ALL &&y tablas abiertas
********----------------------

--********
IF DBUSED('base_datos')
    SET DATABASE to base_datos
    *MESSAGEBOX("Archivos en uso, cierre completamente el programa, luego ábrala y realice el Backup",16,"ATENCIÓN:")
    *return

ENDIF
CLOSE INDEXES
CLOSE DATABASES &&cerramos todas las bases de datos
CLOSE TABLES ALL &&y tablas abiertas
IF DBUSED('base_datos')
    SET DATABASE to base_datos
    MESSAGEBOX("Archivos en uso, intente otra vez. Si persiste el problema cierre completamente el programa, luego ábrala e intente otra vez",16,"ATENCIÓN:")
    return
ENDIF

***************************

Adjunto imagenes.


Gracias de antemano.

Roberto Tello & Asoc. - Estudio Informatico

unread,
May 2, 2017, 4:13:35 PM5/2/17
to publice...@googlegroups.com

LOCAL lni

 FOR m.lnI = _SCREEN.FORMCOUNT TO 1 STEP -1

      _SCREEN.FORMS(m.lnI).RELEASE

 ENDFOR

CLOSE DATA ALL

Sdos.-

--
Roberto H. Tello & Asoc.
Estudio Informático
Msn: robertote...@hotmail.com
Skype: robertotellomoreno

integral

unread,
May 2, 2017, 4:30:04 PM5/2/17
to Comunidad de Visual Foxpro en Español

Estiamdo Amigo :

Te muestro el codigo que utilizo es algo similar al anterior con una variante.

*-- Cerrar Forms abiertos
FOR I = _SCREEN.FormCount TO 1 STEP -1
   _SCREEN.Forms(I).HIDE()
   _SCREEN.Forms(I).Release()
ENDFOR

Saludos,

INTEGRAL

OMAR ROJAS

unread,
May 2, 2017, 4:35:25 PM5/2/17
to Comunidad de Visual Foxpro en Español
Veo que tienes el mismo problema que tuve, la solucion es algo tediosa, por el error que muestras presumo tienes codificado los eventos del form activate,deactivate ... y/o en la validacion de controles etc (tienen razon los que dicen que hay que evitar poner codigo en los eventos jejeje).

La solucion para cerrar un form omitiendo las validaciones es: en cada cuadro de texto que validas poner el codigo antes que cualquier codigo
IF THISFORM.RELEASETYPE>0
    RETURN .T.
ENDIF

Habilitar el boton de cerrado del formulario (THISFORM.CLOSABLE y THISFORM.CONTROLBOX).

y quitar todo codigo que hace referencia a tablas o registros de por ejemplo THISFORM.DEACTIVATE es decir hay que depurar todos los eventos de tu form
dejando el foco en los diferentes controles de tu form y cerrando el form mediante el icono del controlbox.

una vez adecuado tus forms puedes usar el codigo que te dieron para destruir forms sin problemas.

Wilzy G

unread,
May 2, 2017, 4:50:30 PM5/2/17
to Comunidad de Visual Foxpro en Español

Gracias a todos, probaré.
Reply all
Reply to author
Forward
0 new messages