FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for CA-Clipper El TIMER se para si entramos 6 veces a pantalla de creacion
Posts: 41
Joined: Tue Mar 28, 2006 08:21 PM
El TIMER se para si entramos 6 veces a pantalla de creacion
Posted: 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

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
El TIMER se para si entramos 6 veces a pantalla de creacion
Posted: 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
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
El TIMER se para si entramos 6 veces a pantalla de creacion
Posted: 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

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 41
Joined: Tue Mar 28, 2006 08:21 PM
Solucion TIMER
Posted: 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

Continue the discussion