msginfo com tempo para fechar sozinho

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

msginfo com tempo para fechar sozinho

Mensagem por claudiochaves »

Ola,

Alguém teria algum exemplo de codigo para criar um msginfo com tempo para caso o usuario nao clique , ele feche sozinho?

Obrigado, abraços,
Claudio Chaves
Desenvolvedor
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

msginfo com tempo para fechar sozinho

Mensagem por alaminojunior »

Código: Selecionar todos

#include "hwgui.ch"
STATIC Thisform

FUNCTION troco(vTroco)
   LOCAL ootroco, oTroco, oLabel1, oTimer1Troco, oLabel2

   if vTroco = nil .or. vTroco = 0
      return
   endif 
   INIT DIALOG ootroco TITLE "" ;
   AT 0, 0 SIZE 548,156  ;
   FONT HFont():Add( 'Tahoma',0,-67,700,,,) ;
   STYLE WS_POPUP + DS_CENTER + WS_VISIBLE + WS_SYSMENU + MB_USERICON  ;
   ON OTHERMESSAGES {|| onOtherMessages(ootroco) }
   Thisform:= ootroco
            
   SET TIMER otimer1troco OF ootroco VALUE 20000 ACTION  {|| ootroco:CLOSE() } // aqui pode ser parametrizado 5, 10, 20, 30 segundos ...
 
   @ 70,38 GET oTroco VAR vTroco SIZE 408,83 ;
        STYLE ES_RIGHT +ES_READONLY ;
        COLOR 255  PICTURE '@E 999,999.99' MAXLENGTH 10   NOBORDER

   @ 13,2 SAY oLabel1 CAPTION "Troco"  SIZE 85,36   ;
        FONT HFont():Add( 'Tahoma',0,-28,700,,,)

   @ 7,140 SAY oLabel1 CAPTION "ESC - Sai"  SIZE 58,21   ;
        FONT HFont():Add( 'Tahoma',0,-12,700,,,)
   
   ACTIVATE DIALOG ootroco
   UPDATEWINDOW( ootroco:handle )
   
RETURN

Código: Selecionar todos

STATIC FUNCTION onOtherMessages(oo)
IF LASTKEY() = 27
   oo:Close( )
ENDIF
return
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

msginfo com tempo para fechar sozinho

Mensagem por claudiochaves »

Muito obrigado Alamino, abraços
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

msginfo com tempo para fechar sozinho

Mensagem por claudiochaves »

Oi Pessoal, boa tarde.

Com os exemplos e ajuda dos colegas, cheguei neste resultado. Deixo aqui caso alguém necessite de um exemplo.
Com certeza, tem o que melhorar, mas já atendeu minhas necessidades.

Obrigado a todos, abraços,

Código: Selecionar todos

FUNCTION AVISAR( pTempo , pTitulo , pMsg , pLargura , pAltura )
			LOCAL oAvisarTempoStatus , oAvisarTempoTimer , oAvisarTempoLblSaida , oAvisarTempoLblMsg , vAvisarMsg , vTmpCont
			Private oAvisarTempoDlg
			if pLargura = Nil ; pLargura := 600 ; Endif
			if pAltura  = Nil ; pAltura := 200  ; Endif
			vAvisarMsg := ""
			For vTmpCont=1 to len(pMsg)
				vAvisarMsg := vAvisarMsg + iif( subs( pMsg,vTmpCont,1) = ";" , chr(13)+CHR(10) , subs( pMsg,vTmpCont,1) )
			Next
			INIT DIALOG oAvisarTempoDlg TITLE pTitulo AT 0, 0 SIZE pLargura,pAltura FONT RCG_Font_Arial_10 STYLE WS_POPUP + DS_CENTER + WS_VISIBLE + WS_SYSMENU + MB_USERICON ON OTHERMESSAGES {|| onOtherMessages(oAvisarTempoDlg) }
				Thisform:= oAvisarTempoDlg   
				SET TIMER oAvisarTempoTimer OF oAvisarTempoDlg VALUE 1000 ACTION {|| TimerAvisar(oAvisarTempoDlg , oAvisarTempoLblSaida , oTroco , oBtnx_AvisarTempoSaida ) } // aqui pode ser parametrizado 5, 10, 20, 30 segundos ... 		
				@  10          ,  5 BUTTONEX oBtnx_AvisarTempoSaida CAPTION "Esc - Sair" SIZE 80          , 25         STYLE BS_CENTER + WS_TABSTOP FONT RCG_Font_Arial_8 ON CLICK {|| EndDialog() } TOOLTIP "Finalizar tela"
				@  pLargura-50 ,  5 GET      oTroco                  VAR pTempo          SIZE 40          , 25         STYLE ES_RIGHT + ES_READONLY FONT RCG_Font_Arial_8 PICTURE "999" NOBORDER
				@  10          , 40 GET     oAvisarTempoLblMsg       VAR vAvisarMsg      SIZE pLargura-20 , pAltura-50 STYLE ES_MULTILINE +ES_WANTRETURN +ES_AUTOVSCROLL +WS_VSCROLL+ES_READONLY FONT RCG_Font_Arial_10_Negrito
			ACTIVATE DIALOG oAvisarTempoDlg
			UPDATEWINDOW( oAvisarTempoDlg:handle )
		Return .t.
		
		Function TimerAvisar( pObjTela , pObjLbl , pObjConta , pBotao )
			RCG_SetGet_Refresh( pObjConta , str( pObjConta:Value-1,3) )
			if pObjConta:Value < 1
				pObjTela:CLOSE() 
			Endif
		Return .t.
		
		STATIC FUNCTION onOtherMessages(pObjTela)
			IF LASTKEY() = 27
				pObjTela:Close( )
			ENDIF
		return
Claudio Chaves
Desenvolvedor
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

msginfo com tempo para fechar sozinho

Mensagem por lucimauro »

Ola claudio chaves,
No seu código faltou a função RCG_SetGet_Refresh()
Responder