Conhecendo funções de Log no Protheus

No artigo de hoje, vamos conhecer um pouco mais sobre as funções de exibição de log no Protheus: ShowLog, AtShowLog, MostraErro (com a AutoGrLog) e função customizada.

A dica de hoje foi enviada pelo grande Marcelo Cordeiro ( LinkedIn ).

Às vezes precisamos mostrar algumas mensagens de log a um usuário, e até podemos usar funções como Alert, Aviso ou FWAlertInfo.

Mas e quando existe muito texto para ser exibido? Qual seria a melhor alternativa?

Abaixo vamos elencar 4 tipos de funções para essa finalidade.

Sendo que dos 3 primeiros tipos, segue um fonte de exemplo:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zTeste
Exemplo de funções que exibem uma tela de visualização de Logs
@type  Function
@author Atilio
@since 08/04/2024
@obs Abaixo as observações:
 1. Como quebra de linha foi usado a constante CRLF (Chr 13 + Chr 10)
 2. Dica enviada pelo Marcelo Cordeiro ( https://www.linkedin.com/in/marcelo-cordeiro-aa8b72285 )
/*/

User Function zTeste()
    Local aArea     := FWGetArea()
    Local cTexto    := ""

    //Monta o texto com quebra de linhas
    cTexto += "Abaixo uma passagem extraída de Jeremias capítulo 9 (versos 23 e 24): " + CRLF
    cTexto += " " + CRLF
    cTexto += "Assim diz o Senhor: Não se glorie o sábio na sua sabedoria, nem se glorie o forte na sua força; não se glorie o rico nas suas riquezas. " + CRLF
    cTexto += " " + CRLF
    cTexto += "Mas o que se gloriar, glorie-se nisto: em me conhecer e saber que eu sou o Senhor, que faço beneficência, juízo e justiça na terra [...] " + CRLF

    //Exemplo usando a ShowLog (só manda texto, sem opção de alterar título)
    ShowLog(cTexto)

    //Exemplo usando a AtShowLog (além do texto, é possível enviar o título, se vai ter rolagem vertical, rolagem horizontal, se vai quebrar palavras ao trocar de linha e por último se terá botão de cancelar)
    //Nesse caso, também é possível capturar o retorno da AtShowLog, se o usuário clicar no Ok retorna .T. ou se clicar no Cancelar retorna .F.
    AtShowLog(cTexto, "Título de Teste", /*lVScroll*/, /*lHScroll*/, /*lWrdWrap*/, /*lCancel*/)

    //Exemplo usando a AutoGrLog junto com a MostraErro, sendo que além de exibir o log, também é possível salvar ele em um arquivo direto clicando em botão
    AutoGrLog(cTexto)
    MostraErro()

    FWRestArea(aArea)
Return

Exemplo 1 – ShowLog

Talvez uma das mais conhecidas, a ShowLog abre uma tela com um texto com a barra de rolagem.

Ela é bem simples, não tendo muitas parametrizações (como mudar o título). O retorno dela pode ser .T. (se o usuário clicar no Confirmar) ou .F. (se clicar no Cancelar).

Função ShowLog

 

Exemplo 2 – AtShowLog

Podemos dizer que é uma versão melhorada da ShowLog, pois além de receber o texto, ela pode receber alguns parâmetros como o título e alguns comportamentos da navegação do texto (como barras de rolagem).

Além disso, ela também tem um controle, se o usuário clicar no botão Ok (ela retorna .T.) ou se clicar no Cancelar (ela retorna .F.), sendo assim podemos usar como uma pergunta com algum tipo de If ou Else.

Função AtShowLog

 

Exemplo 3 – MostraErro (com AutoGrLog)

Geralmente usamos a MostraErro em ExecAuto, mas nós podemos usar também em outras rotinas. Por exemplo, ao usar a AutoGrLog nós podemos definir ou incrementar uma mensagem que vai ser exibida.

No caso da MostraErro o que ela tem de diferente das acima, é que nela tem um botão já específico para salvar o log exibido.

Função MostraErro

 

Exemplo 4 – Customizando uma tela

Pode ser que você tenha a necessidade de criar uma tela customizada com a navegação de texto e com botões para salvar esse conteúdo.

Por exemplo, em 2017 nós montamos uma tela de exemplo com esse fim, chamada zMsgLog, segue o link para o artigo original:  https://terminaldeinformacao.com/2017/08/22/funcao-mostra-uma-mensagem-de-log-opcao-de-salvar-em-advpl/

 

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação