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
Timer recalcitrante.
- Ramon Paredes
- Posts: 215
- Joined: Fri Feb 02, 2007 3:38 pm
- Location: Managua, Nicaragua
Todo parece bien.....
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
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......
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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í:
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
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( ... )
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
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....
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....
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact: