Uso del TIMER

2,607 views
Skip to first unread message

Arnaldo Toledano

unread,
Jan 9, 2012, 3:29:41 PM1/9/12
to publice...@googlegroups.com
No alcanzo a comprender el funcionamiento del TIMER.

Necesito utilizarlo en el siguiente caso.
Cada X cantidad de tiempo (configurable con el usuario) según el siguiente código

Select Parametros
Thisform.timer1.interval = Parametros.ParTiempo

donde ParTiempo lo define el usuario en un formulario XY.

Cada X cantidad de tiempo, debe abrir una tabla en MySQL y de acuerdo al dato que allí exista debe correr un MÉTODO del
formulario donde se encuentra el TIMER.
Esto es lo que pretendo y es MI RAZONAMIENTO.
No se si es el correcto,  o debo aplicarlo de otra manera.


Espero me entiendan.
--
Arnaldo Toledano
Tesys Informática
Córdoba
Argentina

Victor Espina

unread,
Jan 9, 2012, 4:04:39 PM1/9/12
to publice...@googlegroups.com, arnaldo....@gmail.com
El control timer es bastante facil de utilizar. Basicamente solo utilizas sus propiedades Interval y Enabled, y el evento Timer.

La propiedad Interval define la frecuencia con la que se disparara el evento Timer. Esta medido en milisegundos, por lo que si quieres configurarlo para que se dispare cada 15 segs, debes asignarle el valor de 15 * 1000.

La propiedad Enabled controla si el timer esta en funcionamiento o no. Si lo pones en False, el timer no se disparara; si lo pones en True iniciara el conteo hasta el tiempo indicado en Interval y procedera a disparar el evento Timer.

Tipicamente en el evento Timer debes colocar un codigo como este:

THISFORM.Timer1.Enabled = .F.
THISFORM.procesoAutomatico()
THISFORM.Timer1.Enabled = .T.

Lo que logras con eso es que el timer no se siga disparando mientras tu procesas la accion que deseas realizar periodicamente, sino que lo que haces es detener el timer, hacer lo que necesitas hacer y luego reiniciar el timer.

Saludos

Victor Espina

Norberto

unread,
Jan 9, 2012, 4:05:56 PM1/9/12
to Comunidad de Visual Foxpro en Español
Es correcto. El metodo lo llamas en el event del timer.
Tendrias que tener el timer en enabled=.F. hasta que hayas determinado
el interval accediendo a la tabla Parametros
Luego lo pasas a enabled=.T.

El event deberia tener THISFORM.Mimetodo()


On 9 ene, 17:29, Arnaldo Toledano <arnaldo.toled...@gmail.com> wrote:
> No alcanzo a comprender el funcionamiento del TIMER.
>
> Necesito utilizarlo en el siguiente caso.
> Cada X cantidad de tiempo (configurable con el usuario) seg�n el
> siguiente c�digo
>
> Select Parametros
> Thisform.timer1.interval = Parametros.ParTiempo
>
> donde ParTiempo lo define el usuario en un formulario XY.
>
> Cada X cantidad de tiempo, debe abrir una tabla en MySQL y de acuerdo al
> dato que all� exista debe correr un M�TODO del
> formulario donde se encuentra el TIMER.
> Esto es lo que pretendo y es MI RAZONAMIENTO.
> No se si es el correcto,  o debo aplicarlo de otra manera.
>
> Espero me entiendan.
> --
> *Arnaldo Toledano
> Tesys Inform�tica
> C�rdoba
> Argentina *

TheNewInquirer

unread,
Jan 9, 2012, 4:42:55 PM1/9/12
to Comunidad de Visual Foxpro en Español
Yo no te entendí jeje

Lo que puedo decir es que si se desea mostrar el resultado del cambio
de hora en tiempo real y continuo. En el evento Timer del control
Timer1 debes redireccionar el resultado a un control que puede ser una
simple etiqueta donde se mostrará la hora interactiva así:

Thisform.label1.caption=time()

Luego en la propiedad caption de la etiqueta, borras y la dejas en
blanco.

Luego en la propiedad interval del control timer1 pones 1000 y ya!

Veras aparecer la hora cambiante en tu form.

Ese es el uso básico del timer, porque no te entendí. Talvez eres
demasiado avanzado para que te comprenda.

Arnaldo Toledano

unread,
Jan 9, 2012, 5:05:20 PM1/9/12
to publice...@googlegroups.com
Gracias Victor.

El problema estaba en el Enable.
Desconocia esa propiedad.
Ya esta solucionado.
Gracias nuevamente a vos  y a Noverto


Arnaldo Toledano

Victor Espina

unread,
Jan 9, 2012, 5:52:58 PM1/9/12
to publice...@googlegroups.com
El mantener actulizada la fecha y hora en pantalla es un uso basico del timer. Pero se puede usar para mucho mas que eso, aunque casi en todos los casos se hablaria de una tecnica "pull", es decir, el timer sirve para disparar un proceso que se conecta con una fuente de datos, obtiene informacion relevante para el usuario (mensajes nuevos, tareas por realizar, comandos por ejecutar, etc), los procesa y reinicia el timer.

Una tecnica bien interesante con esto de los timers es la de tener un timer "maestro". Por ejemplo, supongamos que tenemos tres timers:

1) El timer del reloj, que se dispara cada segundo o minuto para actualizar la hora en pantalla
2) El timer de mensajes, que se dispara cada 15 segundos para verificar si hay mensajes nuevos para el usurio
3) El timer de control, que se dispara cada 5 segundos para verificar si hay comandos que la estacion deba ejecutar (como por ejemplo, devolver la informacion del usuario que esta logueado y la pantalla activa)

La idea del timer maestro es sustituir esos tres timers por un timer unico "maestro" que se dispare a un intervalo pequeno y que cada vez que se dispare evalue los "clientes" registrados y determine cuales deben ser ejecutados.  Por ejemplo, seria algo asi:

PUBLIC goMainTimer
goMainTimer = CREATEOBJECT("mainTimerClass")

* Timer de hora
goMainTimer.addEvent("HORA",60,"THISFORM.actualizarHora()"  && Disparar el evento actualizarHora() cada 60s

* Timer de mensajes
goMainTimer.addEvent("MSG",15,"THISFORM.verificarMensajes()"

* Timer de control
goMainTimer.addEvent("CTR",5,"THISFORM.verificarAccionesControl()"

Cada vez que el timer goMainTimer se disparara, pasaria por la lista de eventos y calcularia cuantos segundos han transcurrido desde la ultima vez que se invoco ese evento, y si la cantidad supera el intervalo definido para el evento, lo vuelve a ejecutar y guarda la hora; y asi con los demas eventos.

Resultado? en lugar de tener tres timers independientes, tenemos uno solo central que se encarga de realizar las mismas tareas de una manera mas eficientes y consumiendo menos recursos.

Saludos

Victor Espina

Rodribezul

unread,
Jan 10, 2012, 8:56:10 PM1/10/12
to Comunidad de Visual Foxpro en Español
Hola Victor

Me gusta esa idea del timer.. Podrias facilitarme el codigo de dicha
rutina.

Gracias

Rodrigo
Bogota-Colombia
Correo: rodri...@gmail.com

Esteban Micossi

unread,
Feb 26, 2020, 12:21:18 AM2/26/20
to Comunidad de Visual Foxpro en Español
Hola Tesys

Chequea esta pagina


Suerte.

Saludos

Esteban Micossi


Antonio Meza

unread,
Feb 26, 2020, 9:00:47 AM2/26/20
to Comunidad de Visual Foxpro en Español
Después de 8 años si debió necesitar mucha suerte!!! jajajajajajaj

Alejandro Isla

unread,
Feb 27, 2020, 9:25:52 AM2/27/20
to Comunidad de Visual Foxpro en Español
Después e 60 trillones de disparos del timer, el usuario encontró gracias a Esteban que podía poner enabled = .f. y dejar, después de 8 años,  de emitir alertas sonoras  y reportes en la impresora. jajaja

Esteban Micossi

unread,
Feb 27, 2020, 4:20:29 PM2/27/20
to Comunidad de Visual Foxpro en Español
Estuve viajando en el tiempo. Reciencito vuelvo y abri la pagina. ja.ja.ja.

JoVeTri

unread,
Feb 27, 2020, 5:04:27 PM2/27/20
to Comunidad de Visual Foxpro en Español
Alguna vez tuve un profesor, al cual antes de consultarle primero, había que ir al manual,
luego realizar la consulta, como último caso.

Ahora no se necesita manual solo san "google".


busqueda Captura.PNG

Carlos Miguel FARIAS

unread,
Feb 28, 2020, 6:54:48 AM2/28/20
to Grupo Fox
Correctísimo el profesor. En la vida real, no siempre tendrás al profesor que te de una mano. Debes acostumbrarte al manual (o google), porque si no, siempre andarás con muletas mentales.

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/71936138-e311-45c4-8238-38a37a6be208%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages