Ver la Versión Completa : [Sintaxis] Detectar la inactividad en un Form
Hrmcobol
15 de julio de 2016, 21:52
Estimados, necesito detectar la inactividad de un form, o sea, que pasado determinado tiempo de inactividad el form se cierre, el tema es que tiene unas 45 opciones entre CBT, OPB y TEXT, yo activo el timer luego de la aceptación de datos.
Como hago para desactivarlo, ya que los eventos son unos 60?
Deberé poner esta opción en cada evento?
Saludos y Gracias
Rapinto
15 de julio de 2016, 22:58
Hrmcobol
Poderias tentar com o "prekeydown" da Form.
O evento é disparado antes de qualquer objecto dentro da form o apanhar.
Poderia resolver.
Experimenta e diz se funcionou.
Un saludo,
Rui Pinto
Fito
15 de julio de 2016, 23:08
hola:
Te cuento cómo lo hice:
* Tengo un timer en el menú principal seteado en un segundo, en el evento timer puse el siguiente código:
if caduce-habilita = pow-true
add 1 to caduce-seg
if caduce-seg >= caduce-tiempo
move pow-false to "active" of tmrCaduce
invoke pow-self "callform" using "usu99" "usuarios.dll"
if caduce-seg not = zeros
invoke pow-self "closeform"
end-if
move pow-true to "active" of tmrCaduce
end-if
end-if
compute caduce-falta = caduce-tiempo - caduce-seg
tengo variables globales external que están dentro de un "copy" en todos los forms.
01 variables-caduce global external.
02 caduce-cuenta pic x(10).
02 caduce-nom pic x(30).
02 caduce-clave pic x(10).
02 caduce-tiempo pic 9(4).
02 caduce-seg pic 9(4).
02 caduce-falta pic 9(4).
02 caduce-habilita pic s9(5) comp-5.
02 caduce-notiempo pic 9.
y en los eventos Prekeypress y Click de todos los formularios:
move zeros to caduce-seg.
Paso a explicar un poco.
La variable "caduce-habilita" la utilizo para habilitar o deshabilitar la función, porque cuando el usuario está realizando un proceso y éste es largo no quiero que se le corte.
"caduce-seg" es la variable donde voy contando los segundos que van pasando y "caduce-tiempo" tiene la cantidad de segundos totales que le permito de inactividad.
Cuando se cumple ese tiempo, llamo a un form para que vuelva a colocar la contraseña, si ésta falla se cierra el sistema.
Y lo que falta es en los eventos Prekeypress y Click de todos los forms, poner en cero "caduce-seg" para que cuando presione cualquier tecla o haga click comience de nuevo a contar el tiempo.
Espero haber sido claro.
Saludos.
Fito...
Kuk
16 de julio de 2016, 13:45
Hrmcobol, en la WORKING del Form defines una variable GLOBAL numérica por ejemplo GLB-TIMER.
En el Timer definido a 1 segundo, pones el código siguiente:
IF GLB-TIMER > 60 *> por ejemplo 1 minuto
INVOKE POW-SELF "CloseForm"
END-IF
ADD 1 TO GLB-TIMER
En los eventos "MouseMove" y "KeyPress" del Form, pones el código:
MOVE ZEROS TO GLB-TIMER
Listo ;)
Hrmcobol
16 de julio de 2016, 14:04
Gracias a Todooooossss !!!
Era logica la solucion, pero uno tiene momentos en los cuales el problema parece no tener solucion.
Gracias por estar alli !!!
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.