Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Detectar la inactividad en un Form (https://www.cobolforo.es/showthread.php?t=436)

Hrmcobol 15 de julio de 2016 21:52

Detectar la inactividad en un Form
 
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:

Código COBOL:
  1.            if caduce-habilita = pow-true
  2.               add 1             to caduce-seg
  3.               if caduce-seg >= caduce-tiempo
  4.                  move pow-false    to "active" of tmrCaduce
  5.                  invoke pow-self "callform" using "usu99" "usuarios.dll"
  6.                  if caduce-seg not = zeros
  7.                     invoke pow-self "closeform"
  8.                  end-if
  9.                  move pow-true     to "active" of tmrCaduce
  10.               end-if
  11.            end-if
  12.            compute caduce-falta = caduce-tiempo - caduce-seg

tengo variables globales external que están dentro de un "copy" en todos los forms.

Código COBOL:
  1.        01  variables-caduce global external.
  2.            02 caduce-cuenta             pic x(10).
  3.            02 caduce-nom                pic x(30).
  4.            02 caduce-clave              pic x(10).
  5.            02 caduce-tiempo             pic 9(4).
  6.            02 caduce-seg                pic 9(4).
  7.            02 caduce-falta              pic 9(4).
  8.            02 caduce-habilita           pic s9(5) comp-5.
  9.            02 caduce-notiempo           pic 9.

y en los eventos Prekeypress y Click de todos los formularios:

Código COBOL:
  1.            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:

Código COBOL:
  1.      IF  GLB-TIMER > 60 *> por ejemplo 1 minuto
  2.          INVOKE POW-SELF "CloseForm"
  3.      END-IF
  4.  
  5.      ADD 1 TO GLB-TIMER

En los eventos "MouseMove" y "KeyPress" del Form, pones el código:

Código COBOL:
  1.      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 !!!


La franja horaria es GMT +2. Ahora son las 01:17.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.