Page 1 of 1
timer con un boton
Posted: Tue Sep 11, 2018 1:11 am
by artu01
Gente:
Necesito programar un timer dentro de un botón que despues de 10 segundos de presionado muestre un msje
ayuda por favor
Hi guys,
I want to do a timer that shows a message after 10 seconds de pressing the button
please help me
Re: timer con un boton
Posted: Tue Sep 11, 2018 2:01 pm
by Armando
Artu01:
A ver si me puedo explicar:
1.- Defines el objeto TIMER así: STATIC/LOCAL oTimer
2.- En el botón que active el timer pones como ACTION una función, así:
DEFINE BUTTON oBtns[01] OF oBar RESOURCE "New16" ACTION ActivaTimer()
3.- En la función ActivTimer() pones el siguiente código
Code: Select all
STATIC FUNCTION Tiempo()
LOCAL nIntervalo := 60000 * 15 // Cada 15 minutos se activará el timer
IF nIntervalo > 0
// 60,000 milesimas es igual a 1 minuto, se crea y se activa solo una vez
DEFINE TIMER oTimer OF oWindow INTERVAL nIntervalo ACTION Ventana() // 600000 es igual a 10 minutos
oTimer:Activate()
ENDIF
RETURN(NIL)
4.- Si te fijas dentro del TIMER esta definida una función, Ventana(), en esa función metes el código
de lo que quieres que se haga.
Saludos
Re: timer con un boton
Posted: Tue Sep 11, 2018 2:57 pm
by karinha
Re: timer con un boton
Posted: Tue Sep 11, 2018 2:58 pm
by karinha
Code: Select all
//-> By Joao Santos - Sao Paulo - Brazil - kapiabafwh@gmail.com
//-> Participacao Especial, Vailton Renato - renato@kssoftware.com.br
#Include "FiveWin.Ch"
STATIC oDlgRelog, oTimerRelog, lDesliga := .F., oWnd, oTimerPorta
STATIC oFnt, oSaida
//---------------------------------------------------------------------------//
FUNCTION RELOG()
LOCAL oSayMens, oFnt2, aGrad
oSayMens := "This a Test message"
aGrad := { { 0.30, CLR_BLACK, CLR_YELLOW},{ 0.70, CLR_YELLOW, CLR_BLACK } }
DEFINE FONT oFnt NAME "Arial" SIZE 08, 20 BOLD
DEFINE FONT oFnt2 NAME "Arial" SIZE 00, -12 BOLD
DEFINE DIALOG oDlgRelog FROM 3, 3 TO 20, 50 ;
TITLE "Test of Message with Timer" ;
GRADIENT aGrad TRANSPARENT ;
STYLE nOR( DS_MODALFRAME )
oDlgRelog:lHelpIcon := .F.
@ .5,10 SAY oSayMens OF oDlgRelog SIZE 100, 12 ;
COLOR CLR_BLACK, CLR_WHITE TRANSPARENT ADJUST
@ 5, 11 BUTTON oSaida PROMPT "&Timer" OF oDlgRelog ;
SIZE 50, 14 ;
ACTION( ACIONA_TIMER( oWnd ) )
oSaida:cToolTip := "Timer"
SET FONT OF oSaida TO oFnt
SET FONT OF oDlgRelog TO oFnt2
ACTIVATE DIALOG oDlgRelog CENTERED
IF lDesliga
oTimerRelog:DeActivate()
oTimerPorta:DeActivate()
ENDIF
oFnt:End()
oFnt2:End()
RETURN NIL
FUNCTION ACIONA_TIMER( oWnd )
DEFINE TIMER oTimerPorta INTERVAL 50 OF oDlgRelog ;
ACTION ACIONA_RELOGIO( oWnd )
ACTIVATE TIMER oTimerPorta
RETURN NIL
FUNCTION ACIONA_RELOGIO( oWnd )
LOCAL oFont
DEFINE FONT oFont NAME "Arial" SIZE 0, -70 BOLD
DEFINE FONT oFnt NAME "Arial" SIZE 08, 20 BOLD
DEFINE TIMER oTimerRelog INTERVAL 50 ;
ACTION ExibeRelogio()
ACTIVATE TIMER oTimerRelog
SET FONT OF oDlgRelog TO oFont
SET FONT OF oSaida TO oFnt
oFont:End()
lDesliga := .T. //-> Para Desligar o Timer
oTimerPorta:DeActivate()
RETURN NIL
FUNCTION ExibeRelogio()
LOCAL NewMensa := "Mensagem"
// Mensageria
IF ISWINDOWVISIBLE( oDlgRelog:hWnd )
oDlgRelog:Say( 3, 01, NewMensa, ;
CLR_YELLOW, CLR_BLACK,, .F. )
// .T. Esquerda - .F. Direita da Dialog.
ENDIF
RETURN NIL
//-> FIM / END
Saludos.
Re: timer con un boton
Posted: Wed Sep 12, 2018 12:16 am
by artu01
Gracias Armando y Joao al fin pude entender como trabaja el timer
Asi lo hice y funciono!
Code: Select all
STATIC oTmr
REDEFINE BUTTON oBtnE ID 4029 OF oFld:aDialogs[1] ;
ACTION ( ActivaTimer() , Proceso() )
Static Function ActivaTimer()
DEFINE TIMER oTmr of oMainWnd INTERVAL 10000 ACTION MuestraMsje()
ACTIVATE timer oTmr
Return Nil
Function MuestraMsje()
Msgalert('Finalizo tiempo de espera')
Proceso()
Return Nil
Function Proceso()
...
…
if ltimer
otmr:deactivate()
endif
return nil
GRACIAS!!!
Re: timer con un boton
Posted: Wed Sep 12, 2018 12:13 pm
by karinha
Very good. Muy bién!
Saludos.
Re: timer con un boton
Posted: Wed Sep 12, 2018 3:07 pm
by Armando
Artu01:
Excelente, Cuando nos lo explican todo es mas sencillo
Saludos