Banner (letreiro) com HwGui

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Banner (letreiro) com HwGui

Mensagem por asimoes »

Exemplo de banner (marquee) com hwgui.

Código: Selecionar todos

*********************************************************************
* Programa : BANNER                                                 *
* Autor    : Alexandre Simões                                       *
* Data     : 22/09/2013                                             *
* Descricao: Gerar animação tipo banner                             *
*********************************************************************
#include "hbcompat.ch"
#include "common.ch"
#include "set.ch"
#include "hwgui.ch"

FUNCTION Main
LOCAL oIconApp:=HIcon():AddResource("ICON_1")
LOCAL addX:=20, nWidth:=768, nHeight:=200
PRIVATE oDialogWindow, oLabel, oTimer, lFecharWindow:=.F.

   PREPARE FONT oFont NAME "Courier New" WIDTH 14 HEIGHT -15
   
   INIT DIALOG oDialogWindow ;
        TITLE   "Banner" ;
        ICON    oIconApp ;
        AT      0,0 ;
        SIZE    nWidth,nHeight ;
        FONT    oFont ;
        COLOR   16760439 ;
        STYLE   DS_CENTER + WS_VISIBLE + WS_SYSMENU

   @ 0,0 SAY oLabel CAPTION "" ;
                    FONT oFont ;
                    STYLE SS_LEFT + WS_BORDER ;
                    COLOR hwg_RGB(0,0,255) BACKCOLOR 16777172

   oLabel:bSize := { | o, x, y | hwg_MoveWindow( o:handle, addX / 2, nHeight - 60, x - addX, 20 ) }


   Liga_Timer(oDialogWindow,.T.)
   
   oDialogWindow:Center()
   
   oDialogWindow:Activate() // Parâmetro .T. = NOMODAL, .F. ou () = MODAL

RETURN Nil

FUNCTION Liga_Timer(oJanela,lLiga)
MEMVAR oTimer
   IF lLiga
      SET TIMER oTimer of oJanela VALUE 300 ACTION {|| Letreiro() }
   ELSE
      oJanela:oTimer:End()   
   ENDIF
RETURN Nil

FUNCTION Letreiro()
LOCAL nTamanho:=(oDialogWindow:nWidth -25) /14
STATIC cTime
STATIC _RODAESQ
STATIC _RODADIR
   
   IF _RODAESQ = NIL
       cTime:=Time()
       cTexto:=' Teste de Banner (letreiro) com HwGui'
       aSize:=hwg_TxtRect( cTexto, oDialogWindow:aControls[1] )
       cTexto:=Space(nTamanho-(aSize[1] / 14))+cTexto
       _RODAESQ:=cTexto
   ENDIF

   IF _RODADIR = NIL
       cTexto:='Teste de Banner (letreiro) com HwGui '
       aSize:=hwg_TxtRect( cTexto, oDialogWindow:aControls[1] )
       cTexto:=Space(nTamanho-(aSize[1] / 14))+cTexto
      _RODADIR:=cTexto //PADL(cTexto,Len(Space(nTamanho-nLen))," ") //Roda para esquerda
   ENDIF

   //_RODADIR := SUBSTR(_RODADIR,LEN(_RODADIR))+SUBSTR(_RODADIR,1,Len(_RODADIR)-1) //PARA DIREITA
   _RODAESQ := SUBSTR(_RODAESQ,2,LEN(_RODAESQ))+SUBSTR(_RODAESQ,1,1)             //PARA ESQUERDA
   
   oLabel:caption:=_RODAESQ
   hwg_doevents()
RETURN Nil

FUNCTION Sair
   lFecharWindow:=.T.
   HWG_ExitProcess()
RETURN -1  

INIT FUNCTION AppSetup()
  
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" )

  SET CENTURY ON
  SET EPOCH TO 1920
  SET DATE BRITI

RETURN Nil 
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Banner (letreiro) com HwGui

Mensagem por marcos.gurupi »

So funciona com harbour ?
Marcos Roberto
NetService Software
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Banner (letreiro) com HwGui

Mensagem por asimoes »

Marcos,

Este exemplo pode ser compilado com xharbour também, verificar as funções que tem hwg_* que provavelmente na versão hwgui mais antiga não tenha esta inicial.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Banner (letreiro) com HwGui

Mensagem por asimoes »

Continuando...

Consegui um efeito melhor centralizando.

Código: Selecionar todos

 @ 0,0 SAY oLabel CAPTION "" ;
                    FONT oFont ;
                    STYLE SS_CENTER + WS_BORDER ;
                    COLOR hwg_RGB(0,0,255) BACKCOLOR 16777172
Pode colocar também no caption da janela:

Código: Selecionar todos

oDialogWindow:caption:=_RODAESQ
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Banner (letreiro) com HwGui

Mensagem por marcos.gurupi »

Ola
Tirando a inicial hwg_ eu consegui que ficassem apenas dois erros:

DoEvents() e HB_CDPSELECT()

O meu xhb eh o 1.0.0 e hwgui 2.17
Marcos Roberto
NetService Software
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Banner (letreiro) com HwGui

Mensagem por asimoes »

A função doevents() deixa assim hwg_doevents() e HB_CDPSELECT => HB_SETCODEPAGE
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Banner (letreiro) com HwGui

Mensagem por rubens »

Boa Tarde...

ASimoes...

Chegou a implementar essa função para minigui ?
Se sim tem como postar o código... ?

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Responder