Usina BRAdvPL Guia
Entrar
← Todos os tópicos
FUNDAMENTOPublicado

Réguas de progresso em AdvPL

Processa · ProcRegua · IncProc · RptStatus · SetRegua · IncRegua

Organize processamentos demorados com janelas de acompanhamento e réguas de progressão.

InterfaceProcessamentoRégua de progressoProcessaRptStatus
01 · VISÃO GERAL

Visão geral

Réguas de progresso ajudam o usuário a perceber que uma rotina longa continua em execução. No AdvPL, o conjunto mais comum com Processa usa um bloco de ação, ProcRegua para definir o total e IncProc para avançar a régua. Em outro modelo visual, RptStatus trabalha com SetRegua e IncRegua. Embora os nomes sejam parecidos, os pares pertencem a fluxos diferentes; misturá-los sem validar o contexto pode gerar comportamento inesperado.

02 · SINTAXE

Sintaxe

Processa · ProcRegua · IncProc · RptStatus · SetRegua · IncRegua

Parâmetros

Processa + ProcRegua + IncProc
Fluxo de ProcessaOpcional

Cria a janela de progresso, define o total da régua e incrementa a execução dentro do processamento.

RptStatus + SetRegua + IncRegua
Fluxo de RptStatusOpcional

Exibe uma janela de status e controla a barra de progressão com funções próprias desse contexto.

Retorno

Conteúdo conceitual. Consulte a página específica de cada função para sintaxe e exemplo.

03 · EXEMPLO PRÁTICO

Processa com ProcRegua e IncProc

#Include "TOTVS.ch"

User Function ExProcessa()
    Local bAcao   := {|lFim| U_ExProcessaItens(@lFim)}
    Local cTitulo := "Processamento"
    Local cMsg    := "Processando itens..."
    Local lAborta := .T.

    Processa(bAcao, cTitulo, cMsg, lAborta)
Return

User Function ExProcessaItens(lFim)
    Local nItem
    Local nTotal := 100

    ProcRegua(nTotal)

    For nItem := 1 To nTotal
        If lFim
            Exit
        EndIf

        // Execute aqui o processamento do item.
        IncProc()
    Next nItem
Return
Resultado esperado

A janela criada por Processa acompanha o laço. ProcRegua define o total e IncProc avança a régua a cada item processado.

04 · EXEMPLO PRÁTICO

RptStatus com SetRegua e IncRegua

#Include "TOTVS.ch"
#Include "TopConn.ch"

User Function ExRptStatus()
    Local aArea := GetArea()

    RptStatus({|| U_ExReguaQuery()}, "Aguarde...", "Executando consulta...")

    RestArea(aArea)
Return

User Function ExReguaQuery()
    Local aArea  := GetArea()
    Local nTotal := 0

    TCQuery "SELECT BM_GRUPO, BM_DESC FROM %table:SBM% SBM WHERE SBM.D_E_L_E_T_ = ' '" New Alias "QRY_AUX"

    Count To nTotal
    SetRegua(nTotal)

    QRY_AUX->(DbGoTop())
    While ! QRY_AUX->(Eof())
        // Processa o registro atual.
        IncRegua()
        QRY_AUX->(DbSkip())
    EndDo

    QRY_AUX->(DbCloseArea())
    RestArea(aArea)
Return
Resultado esperado

RptStatus abre uma janela de status. SetRegua define o total e IncRegua incrementa a barra conforme os registros são processados.

BOAS PRÁTICAS
  • Use régua de progresso quando a rotina puder levar tempo perceptível ao usuário.
  • Defina o total antes de iniciar o laço principal, sempre que for possível conhecer a quantidade de itens.
  • Respeite a sinalização de cancelamento quando o processamento permitir interrupção.
  • Para processamentos mais complexos, com log e concorrência, avalie FWGridProcess.
ARMADILHAS COMUNS
  • Não chame IncProc antes de ProcRegua no fluxo de Processa.
  • Não confunda IncProc com IncRegua: cada uma pertence a um contexto de régua.
  • Evite abrir interface de progresso em rotinas automáticas ou em modo sem interface sem validar o contexto.
  • Não use uma régua com total irreal: isso prejudica a percepção do usuário.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. Processa — cria diálogo com régua de progressão. TDN Framework.
  2. TOTVS. Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Função para criar régua de progressão. Central de Atendimento TOTVS, atualizado em 13 ago. 2025.
  3. TOTVS. Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Atribui o valor total da régua de progressão. Central de Atendimento TOTVS, atualizado em 13 ago. 2025.
  4. TOTVS. Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Incrementar a régua criada pela função Processa. Central de Atendimento TOTVS, atualizado em 13 ago. 2025.
  5. ATILIO, Daniel. IncRegua. Terminal de Informação, base de conhecimento.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha