Problema com timer + tprogress

Problema com timer + tprogress

Postby digordo » Thu Oct 23, 2014 1:40 pm

Fala pessoal!

Estou com problema quando utilizo um timer junto com um tprogress. Ocorre que assim que chamo o SetPos do progress o timer passa a desconsiderar o intervalo que foi definido para ele.

Por exemplo, crio um timer com intervalo de 15 segundos e ativo ele, até aqui tudo bem, no momento em que chamo o SetPos do progress o timer passa a executar a todo momento, não respeitando mais o intervalo.

veja um exemplo de código com o problema:

Code: Select all  Expand view

#include "fivewin.ch"

Function U_NovoTeste()
Local oTimer := TTimer(10000,{||oTimer:DeActivate(),MsgStop("TIMER1"),oTimer:Activate()},oWndMain)
Local oTimer2 := TTimer(15000,{||oTimer2:DeActivate(),MsgStop("TIMER2"),oTimer2:Activate()},oWndMain)
oTimer:Activate()
oTimer2:Activate()
Return U_Proc()




Function U_Proc()
Local oDlg
Local oProgress

DEFINE DIALOG oDlg FROM 0,0 TO 500,500 TITLE "TESTE" PIXEL

oProgress := TProgress():New(50,00,oDlg,0,CLR_RED ,CLR_WHITE,.t.,.f.,oDlg:nWidth,8,,.f.,.f.)

TButton():New( 10,10, "exec", oDlg, {||U_Progress(oProgress)}, 40, 40,;
               , , , .t., , ,;
               ,,, , ,)
               

ACTIVATE DIALOG oDlg

Return


Function U_Progress(oProgress)
If MsgYesNo("Proc?")
    oProgress:SetPos(1)
EndiF
ThreadSleep(10)
Return
 
digordo
 
Posts: 13
Joined: Mon Aug 02, 2010 5:15 pm

Re: Problema com timer + tprogress

Postby karinha » Thu Oct 23, 2014 6:32 pm

Olá, veja se ajuda:

Code: Select all  Expand view

#Include "FiveWin.Ch"

STATIC oDlg, oTimerR, lDesliga := .F., oWnd, oTimerP
STATIC oFnt, oSaida

FUNCTION TEM_PROGRESS()

   LOCAL oProgress

   DEFINE FONT oFnt      NAME "Arial"         SIZE 08,  20 BOLD

   DEFINE DIALOG oDlg FROM 0,0 TO 250,500 TITLE "Teste Timer" PIXEL

   oDlg:lHelpIcon := .F.

   oProgress := TProgress():New(50,00,oDlg,0,CLR_RED,CLR_WHITE,.t.,.f.,oDlg:nWidth,8,,.f.,.f.)

   @ 005, 017 BUTTON oSaida PROMPT "&Saida" OF oDlg SIZE 40, 14         ;
              ACTION ( oDlg:End ) CANCEL

   oSaida:cToolTip := OemToAnsi( "Finalizar Gerenciador do Rel¢gio " )

   SET FONT OF oSaida   TO oFnt

   ACTIVATE DIALOG oDlg CENTERED                                        ;
            ON INIT( ACIONA_TIMER( oWnd, oProgress ) )

   IF lDesliga  //-> Se For .T., Desliga o TIMER.
      oTimerR:DeActivate()
      oTimerP:DeActivate()
   ENDIF

   oFnt:End()

RETURN NIL

STATIC FUNCTION ACIONA_TIMER( oWnd, oProgress )

   DEFINE TIMER oTimerP INTERVAL 1000 OF oDlg                        ;
          ACTION MOSTRA_TIMER( oWnd, oProgress )

   ACTIVATE TIMER oTimerP

RETURN NIL

STATIC FUNCTION MOSTRA_TIMER( oWnd, oProgress )

   LOCAL oFont

   DEFINE FONT oFont NAME "Arial" SIZE  0, -70 BOLD
   DEFINE FONT oFnt  NAME "Arial" SIZE 08,  20 BOLD

   DEFINE TIMER oTimerR INTERVAL 1500                                    ;
          ACTION ExibeTimer( oProgress )

   ACTIVATE TIMER oTimerR

   SET FONT OF oDlg   TO oFont
   SET FONT OF oSaida TO oFnt

   oFont:End()

   lDesliga := .T.  //-> Para Desligar o Timer

   oTimerP:DeActivate()

RETURN NIL

FUNCTION ExibeTimer( oProgress )

   IF ISWINDOWVISIBLE( oDlg:hWnd )

      oProgress:SetRange( 0, 200 )
      oProgress:SetPos( 100 )
     
   ENDIF

RETURN NIL

//-> FIM DO PROGRAMA <-------------------------------------------------------//
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Problema com timer + tprogress

Postby emotta_no » Fri Oct 24, 2014 1:52 pm

João, o problema não é fazer o progress com timer e sim o BUG que acontece. Este é apenas um exemplo simples que simula o BUG.

precisamos de uma solução para o BUG... mas obrigado pela tentativa...
emotta_no
 
Posts: 33
Joined: Thu Jul 04, 2013 9:28 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 93 guests