Hoje vamos aprender a usadr a Função FWMsgRun do AdvPL [Tlpp], [tl++] Cria uma tela de processamento que fica com um círculo girando. – Curso Protheus grátis AdvPL / TLPP.
Sintaxe: FWMsgRun(, [oComponent] , , [cHeader], [cText] ) -> Nil
Parâmetros:
| Nome | Tipo | Descrição | Default | Obrigatório | Referência |
|---|---|---|---|---|---|
| oComponent | Object | Componente que será sobreposto com o painel | |||
| bAction | Code-block | Bloco de código a ser executado (o Bloco de código recebera o objeto TSay para atualizações) | X | ||
| cHeader | String | Texto do Header | “” | ||
| cText | String | Texto do Corpo | “” |
Exemplos de Uso:
- FWMsgRun(, {|oSay| mMinhaRot(oSay) }, “Processando”, “Processando a rotina…”)
- FwMsgRun(Nil,{|| MSExecAuto({|x,y,z| MATA410(x,y,z)},aCabec,aItens,3)},Nil,”Gerando o pedido de venda…”)
- FWMsgRun(oPanel1, {|oSay| ExecTest(oSay) }, “Processando”, “Processando a rotina…”
#Include "Protheus.ch"
/*----------------------------------------------------------------------------------*
{Protheus.doc} User Function mFWMsgRun()
@type: User Function
@author: Jose Moura
@site: https://academiaproerp.com
@canal: [Inscreva-se no canal https://www.youtube.com/@academiaprotheus]
@desc.: Função FWMsgRun. Cria uma tela de processamento com círculo girando
@Sintaxe: FWMsgRun(, [oComponent] , <bAction>, [cHeader], [cText] ) -> Nil
*-----------------------------------------------------------------------------------*/
User Function mFWMsgRun()
Local aArea := GetArea()
FWMsgRun(, {|oSay| mMinhaRot(oSay) }, "Processando", "Processando dados Municipios CC2")
RestArea(aArea)
Return
Static Function mMinhaRot(oSay)
Local nRegAtu := 0
Local nRegTot := 0
oSay:SetText("Iniciando processamento...")
//Contando o total de registros da tabela de Municipios
DbSelectArea("CC2")
CC2->(DbGoTop())
Count To nRegTot
//Enquanto houver dados na CC2, mostra a mensagem de processamento
CC2->(DbGoTop())
While !CC2->(EoF())
nRegAtu++
oSay:SetText("Analisando registro " + cValToChar(nRegAtu) + " de " + cValToChar(nRegTot) + "...")
ProcessMessage() //FORÇA O DESCONGELAMENTO DO SMARTCLIENT
CC2->(DbSkip())
EndDo
Return



Analista de sistemas, programador com mais de 18 anos de experiência no sistema Totvs Protheus, administrador, suporte e customizações, idealizador da Academia ProERP, já ajudou centenas de pessoas a programar em AdvPL/Tlpp.