Função MsgTimer


MsgTimer Mostra uma tela de mensagem informando ao usuário que a tela será finalizada, conforme configuração dosparâmetros MV_FATOUT e MV_MSGTIM. Parametros: nTimeMsg -> Informar quantos segundos a tela da mensagem deverá aparecer antes do fechamento da tela principal. oDlgAux -> Obejto da tela principal que será fechada. Muito usado no financeiro ou faturamento, um exemplo disso é quando você vai emitir uma nota e fica com a tela parada, alguns minutinhos a tela se fecha.  

Local oTimer
Local nTimeOut  := SuperGetMv("MV_FATOUT",,900)*1000 	// Estabelece 15 minutos para que o usuarios selecione os titulos a faturar
Local nTimeMsg  := SuperGetMv("MV_MSGTIME",,120)*1000 	// Estabelece 02 minutos para exibir a mensagem para o usuário
                                                      	// informando que a tela fechará automaticamente em XX minutos

DEFINE MSDIALOG oDlg1 TITLE STR0021 From aSize[7],0 To aSize[6],aSize[5] OF oMainWnd PIXEL//"Fatura a Receber"
	oTimer:= TTimer():New((nTimeOut-nTimeMsg),{|| MsgTimer(nTimeMsg,oDlg1) },oDlg1) // Ativa timer
	oTimer:Activate()
	oDlg1:lMaximized := .T.     

	oPanel := TPanel():New(0,0,'',oDlg,, .T., .T.,, ,40,40,.T.,.T. )
	oPanel:Align := CONTROL_ALIGN_TOP

	@ 008 , 005	SAY STR0051	+ cPrefix				FONT oDlg1:oFont PIXEL OF oPanel					//"Prefixo: "
	@ 017 , 005	SAY STR0022	+ cFatura				FONT oDlg1:oFont PIXEL OF oPanel					//"N£mero: "
	@ 008 , 080	SAY STR0023	+ Substr(cNat,1,10) 	FONT oDlg1:oFont PIXEL OF oPanel					//"Natureza: "
	@ 017 , 080	SAY STR0024	+ AllTrim(Str(nMoedFat,2,0))	FONT oDlg1:oFont PIXEL OF oPanel		//"Moeda: "

	@ 008 , 150	Say STR0025 FONT oDlg1:oFont PIXEL OF oPanel		//"Valor Fatura"
	@ 008 , 200	Say STR0026 FONT oDlg1:oFont PIXEL OF oPanel		//"Valor Selecionado"
	@ 008 , 250	Say STR0027 FONT oDlg1:oFont PIXEL OF oPanel		//"T¡t. Selec."
	If cPaisLoc<>"CHI"
		@ 017 , 150	Say oValorFat	VAR nValorF		Picture "@E 999,999,999.99" FONT oDlg1:oFont PIXEL OF oPanel
		@ 017 , 200	Say oValor		VAR nValor		Picture "@E 999,999,999.99" FONT oDlg1:oFont PIXEL OF oPanel
	else
		@ 017 , 150	Say oValorFat	VAR nValorF		Picture "@E 99,999,999,999" FONT oDlg1:oFont PIXEL OF oPanel
		@ 017 , 200	Say oValor		VAR nValor		Picture "@E 99,999,999,999" FONT oDlg1:oFont PIXEL OF oPanel
	endif
	@ 017 , 250	Say oQtdTit 	VAR nQtdTit 	Picture "@E 999,999,999"  FONT oDlg1:oFont PIXEL OF oPanel 

	@ 0.2 , 00.3 To 2.5,17 OF oPanel
	@ 0.2 ,   17 To 2.5,39 OF oPanel

	oMark :=MsSelect():New(cAliasSe1,"E1_OK","!E1_SALDO",aCampos,@lInverte,@cMarca,{45,oDlg1:nLeft,oDlg1:nBottom,oDlg1:nRight})
	oMark:bMark := {||Fa280Exibe(cAliasSe1,cMarca,oValor,oQtdTit,oMark,@nValor)}
	oMark:bAval	:= {||Fa280bAval(cAliasSe1,cMarca,oValor,oQtdTit,oMark,@nValor,,,aChaveLbn)}
	oMark:oBrowse:lhasMark := .t.
	oMark:oBrowse:lCanAllmark := .t.
	oMark:oBrowse:bAllMark := { || FA280Inverte(cAliasSe1,cMarca,oValor,oQtdTit,.T.,oMark,@nValor,,,,aChaveLbn)}
	oMark:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT   

    If ExistBlock("F280REC")
      aBut280 := ExecBlock( "F280REC",.F.,.F., {aBut280})
    EndIf      

ACTIVATE MSDIALOG oDlg1 ON INIT FaMyBar(oDlg1,{|| nOpca := 1,;
IIF(Fa280ValOK(),IF(Fa280Soma(),oDlg1:End(),;
Iif(Fa280Val(oValorFat),nOpca:=0,nOpca:=0)),nOpca:=0)},;
{|| nOpca := 2,oDlg1:End()},aBut280);
VALID (oTimer:End(),.T.) CENTERED