Clipper On Line • Ver Tópico - ajuda com SET TIMER

ajuda com SET TIMER

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

ajuda com SET TIMER

Mensagempor Fernando queiroz » 19 Jun 2019 10:31

TENHO uma tela com Browse e quero que ela se atualize sozinha em intervalos de tempo, coloquei o SET TIMER mas não esta funcionando, o que estou fazendo de errado,
segue código para avaliação dos mestres :)Pos

  INIT DIALOG oDlgPESQ TITLE "GERÊNCIA RECEBIMENTO DOS PEDIDOS" ;
      ICON HIcon():AddFile('sgc.ico')  ;
      AT 0, 0 SIZE 947,584 CLIPPER  NOEXIT  ;
      STYLE WS_OVERLAPPEDWINDOW+DS_CENTER+DS_ABSALIGN ;
      ON INIT {|This| oDlgPESQ_onDlgInit( This, oDlgPESQ ) }
   ThisPESQ1 := oDlgPESQ

//   SET TIMER oTimer of oDlgPESQ VALUE 500 ACTION {|| PEDIDOS->(DBGOTOP()), oBrowse2:REFRESH() }

   @ 4,70 BROWSE oBrowse2 DATABASE OF oDlgPESQ SIZE 940,482 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
         ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
         ON POSCHANGE {|| hwg_WriteStatus( oDlgPESQ,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8))) };
         ON CLICK {|| PGTO_RECEBER(  ), PEDIDOS->(DBGOTOP()), oBrowse2:Refresh() } ;
         ON KEYDOWN {|oBrowse2,nKeyPress| oBrowse2_onKeyDown( oBrowse2,nKeyPress ) };
         ON UPDATE {|| PEDIDOS->(DBGOTOP()), oBrowse2:REFRESH() }

   ThisPESQ := oDlgPESQ

   oBrowse2:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
   oBrowse2:freeze := 1
   oBrowse2:alias := 'pedidos'
   oBrowse2:nColumns := 9

   oBrowse2:AddColumn( HColumn():New('Nr.Pedido', FieldBlock( 'numnot' ) ,'C',15, 0 ,.F.,1,2,,,,,,;
                          {|| Ordsetfocus(1), Dbgotop(), obrowse2:Refresh(), cProgressKey:="" ,  ;
                     hwg_WriteStatus( oDlgPESQ,3,"Ordem: Nr.Pedido") } ,,,,))

   oBrowse2:AddColumn( HColumn():New(' Data Venda ', FieldBlock( 'datven' ) ,'D',10, 0 ,.F.,0,,,,,,,,,,,))
   
   oBrowse2:AddColumn( HColumn():New('Nome Cliente', FieldBlock( 'NRAZ_SOC' ) ,'C',60, 0 ,.F.,1,,,,,,,;
                          {|| Ordsetfocus(5), Dbgotop(), obrowse2:Refresh(), cProgressKey:="" , ;
                     hwg_WriteStatus( oDlgPESQ,3,"Ordem: Nome Cliente") } ,,,,))
                     
   oBrowse2:AddColumn( HColumn():New(' Total da Nota ', FieldBlock( 'totnot' ) ,'N',14, 2 ,.F.,0,2,'@E 9,999,999.99',,,,,,,,,))
   oBrowse2:AddColumn( HColumn():New('Tipo Pagamento              ', {|| MUDA_PGT() } ,'U',10, 0 ,.F.,0,,,,,,,,,,,))

   @ 1,-1 TOOLBAR oToolbar1  SIZE hwg_Getdesktopwidth(),43;     
            STYLE WS_DLGFRAME + BTNS_AUTOSIZE + TBSTYLE_TRANSPARENT 
      oToolbar1:AddButton("BMPSYNC", , 4, 16, "Atualiza" ,{|| PEDIDOS->(DBGOTOP()), oBrowse2:REFRESH() },'Atualiza os Pedidos Pendentes na Tela','', "oToolbutton1")
      oToolbar1:AddButton(0, , 4,  1, "" ,,,'', "oToolbuttonsep1")
      oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| oDlgPESQ:Close() },'Sair da rotina','', "oToolbutton2")
      oToolbar1:CreateTool()

    ADD STATUS PANEL TO oDlgPESQ HEIGHT 30  PARTS 200,120,300       
   @ 4,45 SAY oLabel1B CAPTION "Pesquisar"  SIZE 138,25 ;
      STYLE SS_CENTER +WS_DLGFRAME    
   @ 150,45 SAY oLabel4 CAPTION "" SIZE 410,25 ;
        STYLE WS_BORDER;
        COLOR 16777215  BACKCOLOR 255    

      oBrowse2:aColumns[1]:oFont := HFont():Add( '',0,-15,700,,,)      

      oBrowse2:aColumns[1]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
      oBrowse2:aColumns[2]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
      oBrowse2:aColumns[3]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
      oBrowse2:aColumns[4]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
      oBrowse2:aColumns[5]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
      SET TIMER oTimer of oDlgPESQ VALUE 300 ACTION {|| PEDIDOS->(DBGOTOP()), oBrowse2:REFRESH() }
      
   ACTIVATE DIALOG oDlgPESQ


como não estava funcionando coloquei um botão para atualizar a tela, mas quero automático a atualização :))
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

ajuda com SET TIMER

Mensagempor JoséQuintas » 19 Jun 2019 14:26

Não tem a ver com o problema, é apenas uma sugestão de mudança no fonte:
LOCAL oColuna, bColorBlock
...
bColorBlock := {|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
FOR EACH oColuna IN oBrowse2:aColumns
   oColuna:bColorBlock := bColorBlock
NEXT


ou
bColorBlock := {|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
AEval( oBrowse2:aColumns,  { | e | e:bColorBlock := bColorBlock } )


No lugar disto:
oBrowse2:aColumns[1]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[2]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[3]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[4]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }


Nem é apenas pelo fonte, mas porque vai facilitar alterações futuras da cor, por exemplo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ajuda com SET TIMER

Mensagempor sygecom » 19 Jun 2019 18:20

Fernando,
Não sei dizer se na versão atual tem. Mas na versão 2.17 tem o metodo SetRefresh( nSeconds ) dentro da CLASSE HBROWSE, com ele você consegue setar para que a cada NNN segundos fique atualizando seu browse.

Ou se tiver usando uma versão da HWGUI que não tenha, pode fazer o seguinte dentro da DIALOG

local nTempo_Timer:= 25*1000  // ATUALIZA A CADA 25 SEGUNDOS
local oTimerBrowse
SET TIMER oTimerBrowse OF oTelaPrincipal ID 50005 VALUE nTempo_Timer ACTION {|| ATUALIZA_BROWSE()  }
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

ajuda com SET TIMER

Mensagempor Fernando queiroz » 20 Jun 2019 12:19

Descobri onde estava o erro para que não funcionasse

o TIMER tinha de ser utilizado no

ACTIVATE DIALOG oDlgPESQ On Activate {|| fAtivarTimer( ) }

******************************************************************
STATIC FUNCTION fAtivarTimer( )
******************************************************************
LOCAL nTempo_Timer:= 10*1000 // ATUALIZA A CADA 10 SEGUNDOS

SET TIMER oTimerBrowse OF ThisPESQ ID 9007 VALUE nTempo_Timer ACTION {|| ThisPESQ:oBrowse2:TOP(), ThisPESQ:oBrowse2:Refresh() }

RETURN NIL

eu estava colocando no começo da tela e não funcionava :% :% :%

resultado final showwww,
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

ajuda com SET TIMER

Mensagempor Fernando queiroz » 20 Jun 2019 17:56

JoséQuintas escreveu:Não tem a ver com o problema, é apenas uma sugestão de mudança no fonte:
LOCAL oColuna, bColorBlock
...
bColorBlock := {|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
FOR EACH oColuna IN oBrowse2:aColumns
   oColuna:bColorBlock := bColorBlock
NEXT


ou
bColorBlock := {|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
AEval( oBrowse2:aColumns,  { | e | e:bColorBlock := bColorBlock } )


No lugar disto:
oBrowse2:aColumns[1]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[2]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[3]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse2:aColumns[4]:bColorBlock :={|| IF(PEDIDOS->PENDENTE == .T.,{255, 16777215 ,16777215,255 },{0,16777215,, }) }


Nem é apenas pelo fonte, mas porque vai facilitar alterações futuras da cor, por exemplo.


obrigado Quintas pela dica, ficou muito bom :{ :{
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

ajuda com SET TIMER

Mensagempor Fernando queiroz » 20 Jun 2019 18:00

sygecom escreveu:Fernando,
Não sei dizer se na versão atual tem. Mas na versão 2.17 tem o metodo SetRefresh( nSeconds ) dentro da CLASSE HBROWSE, com ele você consegue setar para que a cada NNN segundos fique atualizando seu browse.

Ou se tiver usando uma versão da HWGUI que não tenha, pode fazer o seguinte dentro da DIALOG

local nTempo_Timer:= 25*1000  // ATUALIZA A CADA 25 SEGUNDOS
local oTimerBrowse
SET TIMER oTimerBrowse OF oTelaPrincipal ID 50005 VALUE nTempo_Timer ACTION {|| ATUALIZA_BROWSE()  }


estou usando a versao 2.22 e nao tem o SETREFRESH, USEI A segunda opcao , sonao tinha ideia onde colocar ,mas enfim deu certo
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

ajuda com SET TIMER

Mensagempor lucimauro » 10 Fev 2022 10:13

Bom dia ;
Alguém sabe como redefinir o tempo do time, tipo eu inicio com 2 minutos mais durante o tempo de execução quero mudar para 10 minutos.
Desde já agradeço.
lucimauro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 448
Data de registro: 21 Set 2004 21:02
Cidade/Estado: Sobral-CE
Curtiu: 15 vezes
Mens.Curtidas: 19 vezes




Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro