cerrar formulario

2,888 views
Skip to first unread message

Gustavo Molina

unread,
Feb 24, 2011, 11:19:50 AM2/24/11
to Comunidad de Visual Foxpro en Español
Hola amigos, necesito hacer que un formulario a los 3 minutos de estar
inactivo es decir que no lo esten usando se cierre solo...

Saludos y Gracias

Gustavo

sergio garcia

unread,
Feb 24, 2011, 11:40:08 AM2/24/11
to publice...@googlegroups.com
Yo le colocaria un timer que se active en el INI y que tu timer al llegar a
los 3 minutos que queres le de thisform.release() y ya


______________________________________
Cel: (502) 55274094
E-mail: in...@magicsoft.com.gt
Aletrnativo: tayi...@gmail.com
Web: www.magicsoft.com.gt


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Gustavo Molina
Enviado el: jueves, 24 de febrero de 2011 10:20 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] cerrar formulario

Saludos y Gracias

Gustavo


__________ Información de NOD32, revisión 5904 (20110224) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com


DIEGO A. CALLEGARI

unread,
Feb 24, 2011, 11:54:24 AM2/24/11
to publice...@googlegroups.com
Te copio un prg, que no recuerdo bien quien es el autor, pero creo haberlo
tomado de PROTALFOX.com.

Lo ejecuto al iniciar el programa.


CLEAR
PUBLIC tmrCheck
tmrCheck = NEWOBJECT("DetectActivity")
RETURN

DEFINE CLASS DetectActivity as Timer
* Sólo detecta inactividad mientras está en este programa?
JustInThisApp = .F.
* Intervalo de inactividad tras el cual dispara OnInactivity (en segundos)
InactivityInterval = 300
* Intervalo cada el que chequea actividad
Interval = 1000
LastCursorPos = ""
LastKeybState = ""
LastActivity = DATETIME()
CursorPos = ""
KeybState = ""
IgnoreNext = .T.

PROCEDURE Init
DECLARE INTEGER GetKeyboardState IN WIN32API STRING @ sStatus
DECLARE INTEGER GetCursorPos IN WIN32API STRING @ sPos
DECLARE INTEGER GetForegroundWindow IN WIN32API
ENDPROC

PROCEDURE Destroy
CLEAR DLLS GetKeyboardState, GetCursorPos, GetForegroundWindow
ENDPROC

PROCEDURE Timer
WITH This
IF ! .CheckActivity()
* Si no hubo actividad veo si es tiempo de disparar OnInactivity
IF ! ISNULL(.LastActivity) AND ;
DATETIME() - .LastActivity > .InactivityInterval
.LastActivity = NULL && Prevengo disparo múltiple de OnInactivity
.OnInactivity()
ENDIF
ENDIF
ENDWITH
ENDPROC

* Chequeo si hay actividad
PROCEDURE CheckActivity
LOCAL lRet
WITH This
IF .JustInThisApp
IF GetForegroundWindow() <> _VFP.hWnd
* Estoy en otro programa
RETURN lRet
ENDIF
ENDIF
.GetCurState()
IF (!.CursorPos == .LastCursorPos OR !.KeybState == .LastKeybState)
IF ! .IgnoreNext && La 1ra vez no ejecuto
lRet = .T. && Hubo actividad
.OnActivity()
.LastActivity = DATETIME()
ELSE
.IgnoreNext = .F.
ENDIF
.LastCursorPos = .CursorPos
.LastKeybState = .KeybState
ENDIF
ENDWITH
RETURN lRet
ENDPROC

* Devuelve el estado actual
PROCEDURE GetCurState
LOCAL sPos, sState
WITH This
sPos = SPACE(8)
sState = SPACE(256)
GetCursorPos (@sPos)
GetKeyboardState (@sState)
.CursorPos = sPos
.KeybState = sState
ENDWITH
ENDPROC

PROCEDURE OnInactivity
WAIT WINDOW "Inactividad a las " + TIME() NOWAIT

*DO FORM "C:\PRODUCCION\FRM_CAMBIAR_USUARIO.SCX"
_Screen.ActiveForm.RELEASE
CLOSE TABLES
CLOSE DATABASE
CLEAR ALL
CLEAR EVENTS
ENDPROC
* Hubo actividad
PROCEDURE OnActivity
* WAIT WINDOW "Actividad a las " + TIME() NOWAIT
ENDPROC
ENDDEFINE


p/ ACEROS CHUBUT SRL

Diego A. Callegari
Administración

Bvd. Segui 7500
+(54) - 0341 - 4590922 // 4582102 // 4581662
Nextel: 232 * 929
2000 - Rosario
Pcia. de Santa Fe
Rep. Argentina
MSN: acerosc...@hotmail.com
SKYPE: diego.callegari
WEB: www.aceroschubut.com.ar

Trefilación de alambres


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Gustavo Molina

Enviado el: Jueves, 24 de Febrero de 2011 01:20 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] cerrar formulario

Hola amigos, necesito hacer que un formulario a los 3 minutos de estar

Jairo Miranda

unread,
Feb 24, 2011, 11:51:57 AM2/24/11
to publice...@googlegroups.com
Acuérdate que no debes cerrar un Form si esta en modo edición , porque se
pierden datos .

Jairo

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Gustavo Molina

Enviado el: Jueves, 24 de Febrero de 2011 11:20


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] cerrar formulario

Hola amigos, necesito hacer que un formulario a los 3 minutos de estar

Carlos Miguel FARIAS

unread,
Feb 24, 2011, 2:53:17 PM2/24/11
to publice...@googlegroups.com
Creas un timer que agregas a l formulario.
Activas el keypreview
En el evento keypress del formulario, lo primero que haces, es resetear el timer (para que empiece a contar de nuevo).
Cada uno de los controles que no se manejan por teclado (botones y demas), le colocas tambien una llamada al reseteador del timer)
En el activate del formulario, reseteas y activas el timer, en el desactivate del formulario, detenes el timer.
No se necesita mucho codigo especial. Si muchos de esos elementos lo agregas en una clase base, despues lo heredas al crear nuevos formularios derivados de esa clase base.
Reply all
Reply to author
Forward
0 new messages