Cerrar programa despues de una inactivdad de 5 min

1,684 views
Skip to first unread message

Diego Mendoza

unread,
Aug 8, 2009, 9:09:36 PM8/8/09
to mundovis...@googlegroups.com
Hola a todos, me pidieron que a mi programa de fox se añada la caracteristicas de que pasando 5 minutos sin actividad alguna este de cierre. Mi pregunta es como  lo podria hacer?debo tener en cuenta que ademas de presionar teclas, puede suceder que el usuario solo utilice el mouse. Como hago para saber q no presiono ninguna y no uso el mouse? Muchas Gracias

Cristobal Galvan

unread,
Aug 9, 2009, 9:47:38 AM8/9/09
to mundovis...@googlegroups.com

Utiliza la clase AutoCloseForm, funciona de la misma manera que el proceso del Protector de pantalla de Windows, determina el tiempo que necesites en el parametro INDELAY,
 
Yo lo utilizo en una aplicacion que fue echa para usar con TOUCHSCREEN.
 
 
La clase es de :
EMail:  GregRe...@GLRsoftware.com
Site: http://www.GLRsoftware.com

Cristobal E. Galvan Nicasio


 

Date: Sat, 8 Aug 2009 22:09:36 -0300
Subject: [Mundo Visual FoxPro] Cerrar programa despues de una inactivdad de 5 min
From: lic.d...@gmail.com
To: mundovis...@googlegroups.com
AutoCloseForm.zip

Carlos Miguel FARIAS

unread,
Aug 9, 2009, 11:09:38 AM8/9/09
to mundovis...@googlegroups.com
Estimado Diego:
La cosa es simple.
Trabajo todo a partir de clases.
En el formulario basico, le incorporo un objeto timer.
Este objeto timer dispara el thisform.release transcurridos 5 minutos (o lo que fijes) sin actividad del formulario.
En el reset del timer, cargo la hora:minutos:segundos de arranque.
En el evento timer (que se dispara cada por ejemplo 5", o lo que consideres oportuno), chequeo que entre la hora actual y la de arranque hayan transcurrido el tiempo requerido.
Si se completo, disparo el thisform.release.
Al formulario le activo el keypresspreview, para que cada vez que se pulsa una tecla, se dispare el keypress del formulario.
En el keypress del formulario, disparo el reset del timer, eso hace que se inicialice el instante de arranque, por lo que los 5' comienzan a contar de nuevo.
Creo ademas una clase boton basica, de la que derivo todos los demas botones, a los eventos de raton, click, dobleclick, right click, etc. les coloco una invocación al reset del formulario (aca además puede ya ir fijando el apuntador (ICOno del mouse), imagen si desactivado o activado, etc. ahorra tiempo.
Eso si, cuando agregas un boton a tu formulario (derivado de esa clase base), debes prever que si incorporas codigo propio a dichos eventos, al principio debes disparar un DODEFAULT() para que resetee el timer.
Por ultimo, en el evento activate del formulario, debes incorporar la habilitación del elemento timer y el evento desactivate, debes deshabilitar el evento timer.
Esto último es para que si salis del formulario por que vas a otro, el timer del formulario que queda atras, no siga corriendo y te cierre el formulario que estaba desactivado.
No es dificil (es muy poco código) y es tal vez el mejor ejemplo simple del aprovechamiento de herencia en POO que se puede hacer en VFP.
Saludos: Miguel

Daniel Sánchez

unread,
Aug 9, 2009, 12:47:18 PM8/9/09
to mundovis...@googlegroups.com
Esta interesante, seria cuestión de agregarle detención de teclas presionadas en un periodo de tiempo y ademas en lugar de cerrar el formulario poner una ventana de confirmación de clave del usuario para poder activar la aplicación por el usuario activo en ese momento, hasta tal vez se podría pasar imágenes de manera aleatoria de la carpeta mis imágenes u otra definida por el usuario hasta que se active el uso del mouse o teclado para solicitar la confirmación de la clave por parte del usuario.

Interesante si alguien implementa estas opciones a la clase que han compartido al grupo y la difunden, espero novedades.

Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Daniel Sánchez

unread,
Aug 9, 2009, 1:11:13 PM8/9/09
to mundovis...@googlegroups.com
Amigo miguel esta excelente tu enfoque, en muchos de los casos mas que cerrar el formulario necesitamos que la aplicación se bloquee hasta que se confirme el uso de la pc por parte del usuario que esta trabajando en el sistema, para esto yo lo aplicaría de una manera mas genérica y creo obteniendo el mismo efecto de seguridad en caso dejara la aplicación activa por mucho tiempo sin uso.
Primero tu clase la colgaría del _screen principal y activaría el keypreview del _screen para que capture todos los eventos del teclado en cualquier formulario.
Con bindevent reemplazaría el método keypress del _screen con un método propio (ya que no tenemos acceso a ese método) para colocar parte de tu código de reset de tu timer.
En tu clase la reconfiguraria no para cerrar un formulario si no para disparar una pantalla de confirmación de usuario o un salvapantallas hasta que el usuario active la aplicación y solicite el sistema la confirmación del usuario mediante su clave personal.

Creo que salio lo que necesitaba, jejeje, espero lo prueben y compartan sus experiencias con el grupo. Suerte.

Carlos Miguel FARIAS

unread,
Aug 10, 2009, 7:13:55 AM8/10/09
to mundovis...@googlegroups.com
Estimados:
La pregunta era sobre salirse de un formulario, mi respuesta fue hacia eso.
el _screen es un formulario, y si, el bindevent te permite asociar tu código a los eventos del formulario y lo que mandes cuando se cumple el tiempo, eso ya es a tu gusto.
Y si no queres usar el screen, podes montar un formulario modal básico, que se integre al _screen y tenes la misma funcionalidad.
En mi caso, además, al disparar una salida (por cancelación de tiempo o no) detecto si hay cambios en curso y mando un cuadro de dialogo apropiado para que el usuario elija (guarda, desechar y cancelar salida).
La lógica es igual y no es tan complicado.
Saludos: Miguel
Reply all
Reply to author
Forward
0 new messages