Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNDAMENTOPublicado

Barras de progreso en AdvPL

Processa · ProcRegua · IncProc · RptStatus · SetRegua · IncRegua

Organice procesos largos con ventanas de seguimiento y barras de progresión.

InterfazProcesamientoBarra de progresoProcessaRptStatus
01 · DESCRIPCIÓN GENERAL

Descripción general

Las barras de progreso ayudan al usuario a percibir que una rutina larga sigue en ejecución. En AdvPL, el flujo común con Processa usa un bloque de acción, ProcRegua para definir el total e IncProc para avanzar la barra. En otro modelo visual, RptStatus trabaja con SetRegua e IncRegua. Aunque los nombres son parecidos, los pares pertenecen a flujos diferentes; mezclarlos sin validar el contexto puede generar comportamiento inesperado.

02 · SINTAXIS

Sintaxis

Processa · ProcRegua · IncProc · RptStatus · SetRegua · IncRegua

Parámetros

Processa + ProcRegua + IncProc
Flujo de ProcessaOpcional

Crea la ventana de progreso, define el total de la barra e incrementa la ejecución dentro del procesamiento.

RptStatus + SetRegua + IncRegua
Flujo de RptStatusOpcional

Muestra una ventana de estado y controla la barra de progreso con funciones propias de ese contexto.

Retorno

Contenido conceptual. Consulte la página específica de cada función para sintaxis y ejemplo.

03 · EJEMPLO PRÁCTICO

Processa con ProcRegua e IncProc

#Include "TOTVS.ch"

User Function EjecutaProceso()
    Local bAccion := {|lFin| U_ProcesaItems(@lFin)}
    Local cTitulo := "Procesamiento"
    Local cMsg    := "Procesando items..."
    Local lAborta := .T.

    Processa(bAccion, cTitulo, cMsg, lAborta)
Return

User Function ProcesaItems(lFin)
    Local nItem
    Local nTotal := 100

    ProcRegua(nTotal)

    For nItem := 1 To nTotal
        If lFin
            Exit
        EndIf

        // Procese aquí el item.
        IncProc()
    Next nItem
Return
Resultado esperado

La ventana creada por Processa acompaña el lazo. ProcRegua define el total e IncProc avanza la barra por cada item procesado.

04 · EJEMPLO PRÁCTICO

RptStatus con SetRegua e IncRegua

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

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

    RptStatus({|| U_ReguaConsulta()}, "Espere...", "Ejecutando consulta...")

    RestArea(aArea)
Return

User Function ReguaConsulta()
    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())
        // Procesa el registro actual.
        IncRegua()
        QRY_AUX->(DbSkip())
    EndDo

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

RptStatus abre una ventana de estado. SetRegua define el total e IncRegua incrementa la barra conforme se procesan los registros.

BUENAS PRÁCTICAS
  • Use una barra de progreso cuando la rutina pueda tardar un tiempo perceptible para el usuario.
  • Defina el total antes de iniciar el lazo principal siempre que sea posible conocer la cantidad de items.
  • Respete la señal de cancelación cuando el procesamiento permita interrupción.
  • Para procesos más complejos, con log y concurrencia, evalúe FWGridProcess.
ERRORES COMUNES
  • No llame IncProc antes de ProcRegua en el flujo de Processa.
  • No confunda IncProc con IncRegua: cada una pertenece a un contexto de barra diferente.
  • Evite abrir una interfaz de progreso en rutinas automáticas o sin interfaz sin validar el contexto.
  • No use una barra con total irreal: eso perjudica la percepción del usuario.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Processa — crea un diálogo con barra de progreso. TDN Framework.
  2. TOTVS. Función para crear barra de progresión. Central de Atención TOTVS, actualizado el 13 ago. 2025.
  3. TOTVS. Atribuye el valor total de la barra de progresión. Central de Atención TOTVS, actualizado el 13 ago. 2025.
  4. TOTVS. Incrementar la barra creada por Processa. Central de Atención TOTVS, actualizado el 13 ago. 2025.
  5. ATILIO, Daniel. IncRegua. Base de conocimiento Terminal de Informação.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Português
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha