El TIMER se para si entramos 6 veces a pantalla de creacion

El TIMER se para si entramos 6 veces a pantalla de creacion

Postby RPATON » Fri Jun 15, 2007 10:58 am

Hola:
Estoy creando un programa para presentar los kilos de una báscula cuando se seleccione la opción. Para ello he creado un TIMER y si entro la pantalla, salgo y lo elimino con oTimer:End() si repito esta operación de 6 a 8 veces a partir de ahí no se activa el timer. Hay que salir de la aplicación y ya vuelve a funcionar refrescando los kilos pero otras 6 veces.
¿Qué puedo estar haciendo mal? Adjunto ejemplo:


FUNCTION LanzaAuto()
LOCAL oDlg
LOCAL oVisor,oTexto
LOCAL nKilos:=0
LOCAL oKilos

cAMatricula:=space(20)

DEFINE FONT oVisor NAME "Arial" SIZE 0,-180 BOLD
DEFINE FONT oTexto NAME "Arial" SIZE 0,-30 BOLD

DEFINE DIALOG oDlg RESOURCE "ENTAUTO" TITLE "Registro de Tickets"

REDEFINE SAY oKilos VAR nKilos FONT oVisor ID 200 OF oDlg UPDATE

REDEFINE GET cAMatricula ID 100 OF oDlg UPDATE


DEFINE TIMER oTimor OF oWndMain INTERVAL 500 ;
ACTION ( nKilos:=Visor(),;
oKilos:Refresh() )

ACTIVATE TIMER oTimor

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT oGet8:Hide()
VALID ( oTimor:End(),.T. )


DEACTIVATE FONT oVisor
DEACTIVATE FONT oTexto


RETURN

FUNCTION Visor()

RETURN 25000 // Consulta los kilos de la bascula para el ejemplo pongo 25000
RPATON
 
Posts: 41
Joined: Tue Mar 28, 2006 8:21 pm
Location: CIUDAD REAL (ESPAÑA)

Postby Antonio Linares » Fri Jun 15, 2007 10:10 pm

En vez de crearlos y destruirlos, podrías usar siempre el mismo y usar una variable que te indique si tiene ó no que hacer algo:

DEFINE TIMER oTimor OF oWndMain INTERVAL 500 ;
ACTION If( lActivo, ( nKilos:=Visor(), oKilos:Refresh() ),)

en donde lActivo, nKilos y oKilos serían variables públicas ó static

Cambiando lActivo a .F. dejaría de hacer su trabajo
regards, saludos

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

Postby antolin » Sat Jun 16, 2007 11:19 am

Utiliza oTimer:Activate() y oTimer:DeActivate().
Crea y activa el Timer antes de entrar en la funcion, y siempre que salgas lo desactivas.
A lo mejor te va bien
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Solucion TIMER

Postby RPATON » Sun Jun 17, 2007 11:22 am

Siguiendo vuestros consejos he sacado el TIMER fuera de la funcion LanzaAuto() y lo he activado y desactivado al entrar y salir. He declarado Publicas las variables de dentro del TIMER y he activado a .T. o .F. la variable oApp:lTimer para que se ejecutara cuando yo le dijera.

Ahora así todo funciona.

Gracias.

Ricardo Patón
RPATON
 
Posts: 41
Joined: Tue Mar 28, 2006 8:21 pm
Location: CIUDAD REAL (ESPAÑA)


Return to FiveWin for CA-Clipper

Who is online

Users browsing this forum: No registered users and 4 guests