Timer recalcitrante.

Timer recalcitrante.

Postby antolin » Tue Jan 22, 2008 7:35 pm

Ultimamente me están ocurriendo las cosas las más raras.

Tengo esto:

DEFINE DIALOG oDlg ....
DEFINE TIMER oTmr INTERVAL 10000 ACTION MiFuncion(...) OF oDlg
...
...
ACTIVATE DIALOG oDlg ... ON INIT oTmr:Activate()
...

FUNCTION MiFuncion( ... )
...

Y no me funciona el TIMER ¿Cómo puede ser?

Compruebo oTmr:nInterval y está correcto
Compruebo oTmr:lActive y está en .T.
No me da error al compilar
Pero no me entra en la función. ¿Tendrá algo que ver con aTimers y nId?

¿Donde está el fallo? que no lo veo.

Tengo FWH 2.7 de enero 2007 con xHarbour

Gracias de antemano
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Todo parece bien.....

Postby Ramon Paredes » Tue Jan 22, 2008 9:39 pm

Hola antolin,

A simple vista todo parece bien pero en la linea donde tienes DEFINE TIMER debria ser REDEFINE TIMER yque es un ID dentro del dialogo

Saludes desde Managua, Nicaragua

Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
User avatar
Ramon Paredes
 
Posts: 215
Joined: Fri Feb 02, 2007 3:38 pm
Location: Managua, Nicaragua

Postby carlos vargas » Tue Jan 22, 2008 10:26 pm

Si mal no recuero hay una limitante en cuanto a los milisegundos, verifica el rango de este valor. por lo demas lo que muestra esta correctamente implementado con el define.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby Antonio Linares » Tue Jan 22, 2008 10:28 pm

Antolin,

Cuando se crea un timer hay que darle una ventana ó un diálogo que tengan un handle de ventana válido. Tal como lo has programado, cuando le pasas oDlg, oDlg aún no tiene su handle creado.

Has de hacerlo así:
Code: Select all  Expand view  RUN
DEFINE DIALOG oDlg ....
...
ACTIVATE DIALOG oDlg ... ON INIT CreaElTimer( oDlg )
...

function CreaElTimer( oDlg ) // Aqui oDlg SI tiene un handle válido

DEFINE TIMER oTmr INTERVAL 10000 ACTION MiFuncion(...) OF oDlg

oTmr:Activate()

return nil

FUNCTION MiFuncion( ... )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42159
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Willi Quintana » Tue Jan 22, 2008 10:29 pm

Hola amigos,,,,
Si pusieras el TIMER en una WINDOW, funcionaria a mil porhora, pero como lo pones en un DIALOG, pues naca la pirinaca, no funciona,, asi que visto el tema, lo resolvi de la siguiente manera:

Function Main()
local ......... bla bla bla bla bla bla

DEFINE DIALOG oDlg ;
RESOURCE "ALARMA" TITLE "Alarma V1.0"

eAccion := {|| MiFuncion(....) }
DEFINE TIMER tCarga OF oDlg INTERVAL 5000 ACTION EVAL(eAccion)
ACTIVATE TIMER tCarga
...
...
...

oDlg:bStart:= { || Timer( tcarga, eAccion, oDlg ) }
...
ACTIVATE DIALOG oDlg ON INIT (tCarga:ACTIVATE()) CENTER
...
.....

Salu2..

PD. funciona, pero e parece que hay algo demas....
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Postby antolin » Thu Jan 24, 2008 10:12 am

Gracias. Creo que el problema está en que no utilizo Window como ventana principal, porque era un programita muy simple y usé un dialogo como principal. Y porque en FW a 16 bits no tenía ese problema.

Muchas Gracias a todos por laprompta respuesta.
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby Willi Quintana » Thu Jan 24, 2008 2:26 pm

Prueba con el ejemplo que te puse arriba, funciona con un DIALOG....
Salu2
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests