ajuda com SET TIMER

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

ajuda com SET TIMER

Mensagem 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 :))
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ajuda com SET TIMER

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

ajuda com SET TIMER

Mensagem 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()  }
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

ajuda com SET TIMER

Mensagem 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,
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: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

ajuda com SET TIMER

Mensagem 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 :{ :{
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: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

ajuda com SET TIMER

Mensagem 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
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

ajuda com SET TIMER

Mensagem 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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

ajuda com SET TIMER

Mensagem 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.
Inacio de Carvalho Neto
Responder