Relógio em tempo real e poupa tela

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

alvaro.bernardi
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 22 Nov 2008 11:02
Localização: Porto Velho

Relógio em tempo real e poupa tela

Mensagem por alvaro.bernardi »

Rotina para colocar um relógio em tempo real na tela (DOS) ativando (ou não) sua rotina de poupar tela
** Rotina aproveitada do exemplo do help do Visual XHarbour e modificada por mim ****

Código: Selecionar todos

PROCEDURE oRelogio(vPoupa)
***********************************************************
* oRelogio()
* Rotina para colocar um relógio em tempo real na tela
* com pupador de tela
*
* Sintaxe:
*   oRelogio([vPoupa])
*   [vPoupa] = Opcional - Se definida como .T. (padrão)
*                         ativa sua rotina de poupar a tela
*                         Se .F. desativa
***********************************************************

PUBLIC nTask
PUBLIC vTC, vTDecorr
  if empty(vPoupa) .or. vPoupa == nil
     vPoupa := .t.
  endif
  vTC := 0
  vTDecorr := Seconds()
  HB_IdleAdd( {|| HB_BackGroundRun() } )
  nTask := HB_BackGroundAdd( {|| ShowTime( 1, MaxCol()-9, vPoupa ) }, 1000 )
  SET BACKGROUND TASKS ON
RETURN

********************************

PROCEDURE ShowTime( nRow, nCol, vPoupaTela )
*****************************************
* Rotina em segundo plano para o relógio
* e o poupador de tela
*****************************************
   @ nRow, nCol SAY CHR(180) COLOR "W+/G"
   @ Row(), Col() SAY Time() COLOR "N/G"
   @ Row(), Col() SAY CHR(195) COLOR "W+/G"
   if vPoupaTela
      if vTC <> lastkey()
         vTC := lastkey()
         vTDecorr := seconds()
      else
         if seconds() - vTDecorr > 300   // 5 MINUTOS  = 300 SEGUNDOS (60*5)
            do Sua_Rotina_poupar_tela   // Coloque aqui sua rotina de poupar tela
            vTDecorr := Seconds()
            vTC := Lastkey()
         endif
      endif
   endif
RETURN

********************************
Faça sua rotina utilizando um laço de que possa sair quando alguma tecla ou gesto do mouse for detectado.

Código: Selecionar todos

** Exemplo
PROCEDURE Poupa()
LOCAL vTela
vTela := savescreen(0,0,24,79)
scroll(00,00,24,79,00)
do while inkey()=0
   ...
   ...
   ...
   if lastkey()>0 //.or.inkey()=27
      exit
   endif
enddo
restscreen(0,0,24,79,vTela)
return(nil)
Se você quiser desabilitar o relógio utilize a seguinte linha

HB_BackGroundDel( nTask )

obs: "nTask" deve ser uma variável publica
Álvaro de Oliveira Bernardi
Microline Software
Porto Velho - RO
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Relógio em tempo real e poupa tela

Mensagem por sygecom »

o xHarbour já conta com a função ShowTime() que faz exatamente como era no clipper.

Código: Selecionar todos

PROCEDURE Main
      CLS
      ShowTime( 0, MaxCol()-8,,"N/BG" ,.T. , .T. )

      USE Customer

      Browse()

   RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
alvaro.bernardi
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 22 Nov 2008 11:02
Localização: Porto Velho

Re: Relógio em tempo real e poupa tela

Mensagem por alvaro.bernardi »

Ok

minha intenção era coloca o relógio junto com o poupador de tela...
Álvaro de Oliveira Bernardi
Microline Software
Porto Velho - RO
Responder