No vídeo de hoje, vamos demonstrar em como exibir uma tela que ficará aberta por alguns segundos sem a opção de fechar.
Recentemente nos perguntaram, se teria alguma forma de exibir uma tela que exibe uma mensagem por alguns segundos, mas sem ter a opção de fechar ela.
Pensando nisso, montamos um exemplo, onde vamos demonstrar a função que criamos, e também comparando com outras possibilidades.
Segue abaixo o vídeo exemplificando:
Abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "tlpp-core.th"
#Include "TOTVS.ch"
//Declaração da namespace
Namespace custom.terminal.youtube
/*/{Protheus.doc} User Function video0259
Exemplo de como acionar uma mensagem com temporizador mas sem o botão de fechar / cancelar
@type Function
@author Atilio
@since 08/08/2026
@example custom.terminal.youtube.u_video0259()
/*/
User Function video0259()
Local aArea := FWGetArea() As Array
Local cMessage := "" As Character
Local nSeconds := 5 As Numeric
//Monta a mensagem que será exibida
cMessage := "Exemplo de Teste!"
cMessage += "Aguarde " + cValToChar(nSeconds) + " segundos"
//Usando a OmsMsgTime
OmsMsgTime(cMessage, nSeconds)
//Usando a Aviso (tem que passar em milissegundos)
Aviso("Exemplo Aviso (Timer)", cMessage, {}, 2, "Sub Título", , , , nSeconds * 1000)
//Usando a função customizada, sem botão de fechar / cancelar
u_zDlgEspera(cMessage, "Teste zDlgEspera", nSeconds)
FWRestArea(aArea)
Return
E abaixo o código da zDlgEspera:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zDlgEspera
Função que abre uma dialog sem opção de fechar e sem o -ESC- por um curto período de tempo
@type Function
@author Atilio
@since 11/07/2024
@param cMensagem, Caractere, Mensagem que aparecerá na tela
@param cTitulo, Caractere, Título da tela da mensagem
@param nSegundos, Numérico, Número de segundos
/*/
User Function zDlgEspera(cMensagem, cTitulo, nSegundos)
Local aArea := FWGetArea()
Local bTimer := {|| oDialog:DeActivate()}
Local oDialog
Local oPanel
Local oSayMsg
Default cMensagem := "Aguarde 3 segundos"
Default cTitulo := "Atenção"
Default nSegundos := 3
//Configura a Dialog
oDialog := FWDialogModal():New()
oDialog:SetBackground(.F.)
oDialog:SetTitle(cTitulo)
oDialog:SetEscClose(.F.)
oDialog:SetSize(80, 150)
oDialog:SetCloseButton(.F.)
oDialog:CreateDialog()
oDialog:SetTimer(nSegundos, bTimer)
//Pega o painel e insere uma mensagem nele
oPanel := TPanel():New(/*nRow*/, /*nCol*/, /*cText*/, oDialog:GetPanelMain())
oPanel:Align := CONTROL_ALIGN_ALLCLIENT
oSayMsg := TSay():New(1, 1, {|| cMensagem}, oPanel, /*cPicture*/, /*oFont*/, /*uParam7*/, /*uParam8*/, /*uParam9*/, .T., /*nClrText*/, /*nClrBack*/, (oPanel:nWidth)/2 - 1, (oPanel:nHeight)/2 - 1, /*uParam15*/, /*uParam16*/, /*uParam17*/, /*uParam18*/, /*uParam19*/, .T.)
//Abre a Dialog
oDialog:Activate()
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.