MsgYesNo() + Timer

Post Reply
User avatar
Joao Cezar
Posts: 21
Joined: Tue Oct 11, 2005 9:42 pm
Location: Goiânia - GO - Brasil

MsgYesNo() + Timer

Post by Joao Cezar »

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
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: MsgYesNo() + Timer

Post by MarioG »

Joao;
Acá tienes una idea sobre el uso de un Boton con timer

Code: Select all

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
User avatar
Joao Cezar
Posts: 21
Joined: Tue Oct 11, 2005 9:42 pm
Location: Goiânia - GO - Brasil

Re: MsgYesNo() + Timer

Post by Joao Cezar »

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.

[code]
...
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 )
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
[/code]
[]´s

João Cezar - Brasil - Goiânia/GO.
FWH 14.09 - xHARBOUR 1.2.3 - WorkShop.Exe
Post Reply