timer con un boton

Post Reply
artu01
Posts: 306
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

timer con un boton

Post 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
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: timer con un boton

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: timer con un boton

Post by karinha »

Image
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: timer con un boton

Post 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.
João Santos - São Paulo - Brasil
artu01
Posts: 306
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: timer con un boton

Post 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!!!
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: timer con un boton

Post by karinha »

Very good. Muy bién!

Saludos.
João Santos - São Paulo - Brasil
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: timer con un boton

Post by Armando »

Artu01:

Excelente, Cuando nos lo explican todo es mas sencillo :)

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply