FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MsgYesNo() + Timer
Posts: 21
Joined: Tue Oct 11, 2005 09:42 PM
MsgYesNo() + Timer
Posted: Wed Oct 05, 2011 01:58 PM

Olá

Alguém já modificou a função MsgYesNo() para que caso o usuário não esteja próximo ao pc, após 15 segundos ela se feche e o sistema continue o seu processamento?

[]´s



João Cezar - Brasil - Goiânia/GO.

FWH 14.09 - xHARBOUR 1.2.3 - WorkShop.Exe
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: MsgYesNo() + Timer
Posted: Wed Oct 12, 2011 11:47 AM
Joao;
Acá tienes una idea sobre el uso de un Boton con timer

Code (fw): Select all Collapse
REDEFINE BUTTON aO[_BCancel] PROMPT "Comprimir"  ID 550 OF soDlg
               ACTION ( ::DOPackFiles( aO ), ;           // Comprime Archivos
                              aO[_BCancel]:SetText( "Hecho" ), soDlg:Setfocus(), ;
                              ::SetTimer( aO[_BCancel] )   // Activa tiempo de Pausa

....

// ------------------------------------------------------------------------- \\
//  Timer de Salida de Dlg
//
METHOD SetTimer( oBtn )    CLASS  TDbf2FTP
static nMaxTmr:= 6
local  oSelf:= Self, ;
       oTimer

   DEFINE TIMER oTimer OF soDlg INTERVAL nMaxTmr*200 ;      // Retardo 6segs
          ACTION if( nMaxTmr >= 1, ( oBtn:SetText("&Salir..."+Str(nMaxTmr,1) ), --nMaxTmr ), ;
                                                  ( nMaxTmr:= 6, oTimer:End(), ;
                                                    soDlg:PostMsg( WM_KEYDOWN, VK_ESCAPE, 0 ) ) )

   ACTIVATE TIMER oTimer

   return( nil )
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 21
Joined: Tue Oct 11, 2005 09:42 PM
Re: MsgYesNo() + Timer
Posted: Wed Oct 12, 2011 04:15 PM
Gracias Mario

Incluso creó una función con un temporizador, que se llama antes de que un msgstop msgyesno, msginfo o para cerrar la marca. Funciona con todos los mensajes, no sólo cierra la msgyesno función. El siguiente ejemplo puede que alguien puede hacer que funcione para cerrar la msgyesno función.

...
MsgTimer( oWnd, "Teste Fechamento da Função MsgInfo", 20 )
MsgInfo("Fecha a janela após 20 segundos!","Teste Fechamento da Função MsgInfo")

MsgTimer( oWnd, "Teste Fechamento da Função MsgYesNo", 20 )
MsgYesNo("Fecha a janela após 20 segundos!","Teste Fechamento da Função MsgYesNo")

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
FUNCTION MsgTimer(oWnd, cMessageCaption, nSeconds)

   //****************************************************************************
   //
   // Fechar um MsgDialog automaticamente
   // Parametros: cMessageCaption, nSegundos
   // Retorno: Nenhum
   //
   //****************************************************************************

   oTmr := NIL

   DEFINE Timer oTmr OF oWnd INTERVAL 1000 ACTION DoIncTimer(cMessageCaption, nSeconds, oWnd)

   ACTIVATE TIMER oTmr

RETURN( NIL )
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
STATIC FUNCTION DoIncTimer(cMessageCaption, nSeconds, oWnd)

   //****************************************************************************
   //
   // Tarefa a ser executada antes de estourar o timer
   // Parametros: cMessageCaption, nSeconds
   // Retorno: Nenhum
   //
   //****************************************************************************

   LOCAL lRetorno
   STATIC nHandle := -1
   STATIC nTempo  := 0

   IF nHandle <= 0
      nHandle := FindWindow( 0, cMessageCaption )
      SetWindowText( nHandle, cMessageCaption + " (" + StrTrim(nSeconds - nTempo) + ")")
   ENDIF

   IF nHandle > 0
      //
      //-- Começa a contar a partir do momento que acha a janela ---------//
      //

      nTempo++

      IF nTempo == nSeconds
         //
         //-- Se estorou o tempo fecha a janela e destroi o timer --------//
         //
         oTmr:Deactivate()
         lRetorno:=SendMessage( nHandle, WM_CLOSE )
         nHandle:=-1
         nTempo:=0
         oTmr:End()
         RELEASE oTmr
      ELSE
         //
         //-- Exibe a contagem do tempo ----------------------------------//
         //
         SetWindowText(nHandle,cMessageCaption + " (" + StrTrim(nSeconds - nTempo) + ")")
      ENDIF

   ENDIF

Return( NIL )
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
[]´s



João Cezar - Brasil - Goiânia/GO.

FWH 14.09 - xHARBOUR 1.2.3 - WorkShop.Exe

Continue the discussion