Página 1 de 1

ajuda com SET TIMER

Enviado: 19 Jun 2019 10:31
por Fernando queiroz
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

Código: Selecionar todos

  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 :))

ajuda com SET TIMER

Enviado: 19 Jun 2019 14:26
por JoséQuintas
Não tem a ver com o problema, é apenas uma sugestão de mudança no fonte:

Código: Selecionar todos

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

Código: Selecionar todos

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

Código: Selecionar todos

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.

ajuda com SET TIMER

Enviado: 19 Jun 2019 18:20
por sygecom
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

Código: Selecionar todos

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()  }

ajuda com SET TIMER

Enviado: 20 Jun 2019 12:19
por Fernando queiroz
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,

ajuda com SET TIMER

Enviado: 20 Jun 2019 17:56
por Fernando queiroz
JoséQuintas escreveu:Não tem a ver com o problema, é apenas uma sugestão de mudança no fonte:

Código: Selecionar todos

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

Código: Selecionar todos

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

Código: Selecionar todos

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 :{ :{

ajuda com SET TIMER

Enviado: 20 Jun 2019 18:00
por Fernando queiroz
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

Código: Selecionar todos

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

ajuda com SET TIMER

Enviado: 10 Fev 2022 10:13
por lucimauro
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.

ajuda com SET TIMER

Enviado: 06 Mai 2024 00:36
por cjp
Alguém poderia me dar uma dica para o uso de SET TIMER em meu sistema (bem simples).
Quero apenas detectar a inatividade do sistema, para executar uma função em caso de inatividade.