PBToolboxAI v4 ← Site

progressbar — u_pbt_progressbar #

← Referencia de componentes · Índice de la guía

Barra de progreso con tema: barra horizontal o anillo, valor numérico o animación de espera, porcentaje mostrado, color libre.

▶ Verlo en vivo — Aplicación de demostración, mosaico Progress: la vista previa, el código que lo genera y esta página, uno al lado del otro.


De un vistazo #

Userobjectu_pbt_progressbar
Clase de items— (componente sin items)
Sirve paraMostrar el avance de un procesamiento largo: importación, exportación, impresión, llamada al servidor
Dos usosdeterminado (se conoce el avance) o indeterminado (solo se sabe que está trabajando)

Inicio rápido #

// window open event
uo_progress.ib_label = true          // shows the percentage next to the bar
uo_progress.id_maximum = ll_total    // the scale of the job : nothing to compute
// During the operation : give the raw value, row by row. It costs almost
// nothing : the bar is redrawn only when what it shows changes.
for ll_i = 1 to ll_total
    of_process_row(ll_i)
    uo_progress.id_value = ll_i
next

Propiedades #

PropiedadTipoPredeterminadoFunción
id_valuedouble0Avance actual, valor BRUTO en la escala id_minimum … id_maximum, releído tal como lo asignó por última vez (sin acotar). La etiqueta redondea hacia abajo: 99,6 muestra 99 %, 100 % significa terminado. Asignarlo en cada fila de un bucle apenas cuesta nada: la barra solo se vuelve a dibujar cuando cambia lo que muestra (una décima de punto porcentual)
id_minimumdouble0Límite inferior de la escala. Un double: una fracción 0..1 es una escala válida
id_maximumdouble100Límite superior de la escala. Un double: un número de bytes superior a 2 GB es una escala válida. Rango vacío o invertido (mín ≥ máx): 100 % en cuanto el valor alcanza el máximo, 0 % antes — un lote vacío (id_maximum = 0, id_value = 0) se muestra terminado
is_modestring"linear"Forma del componente: linear (barra horizontal que ocupa todo el ancho del control y sigue su altura: cabe donde estaba una HProgressBar) o circular (anillo) — constantes MODE_LINEAR, MODE_CIRCULAR. Un valor desconocido vuelve a linear
ib_indeterminatebooleanfalseModo espera: una barra que se desliza, o un arco fijo que gira en modo circular; id_value se ignora pero se conserva. Si Windows pide menos animaciones, la espera pulsa en lugar de moverse
ib_labelbooleanfalseMuestra el porcentaje junto a la barra o en el centro del anillo, en el idioma de visualización («50 %» en francés, «50%» en inglés). is_label_format cambia lo que dice
is_label_formatstring""Lo que dice la etiqueta (ib_label). Vacío = el porcentaje. Si no, un texto en el que se sustituyen {percent}, {value}, {min} y {max}, con los números escritos en el idioma de visualización; el resto se escribe tal cual, como texto sin formato. El lector de pantalla dice el mismo texto
is_statestring"normal"El significado de la barra, como la barra de progreso de Windows: STATE_NORMAL (color de acento), STATE_PAUSED (amarillo, el procesamiento espera) o STATE_ERROR (rojo, el procesamiento ha fallado). Pausa y error toman los colores de estado del tema, claro u oscuro, y prevalecen sobre il_color; una barra de espera deja de moverse. Un valor desconocido equivale a STATE_NORMAL
il_colorlong-1Color de relleno, con el formato RGB() de PowerBuilder. -1 = color de acento del tema. En pausa o en error (is_state), prevalece el color de estado
is_theme_stylestring""Estilo visual del componente (constantes THEME_STYLE_*); vacío = el de la aplicación, seguido en cada cambio
is_theme_modestring""Variante clara u oscura (constantes THEME_MODE_*); vacío = la de la aplicación, seguida en cada cambio
il_theme_accentlong-1Color de acento de este componente (-1 = acento de la aplicación, o el del tema)

Este componente no publica tooltip (is_tooltip, is_super_tooltip_*): una barra de progreso se lee por sí sola, y una etiqueta al pasar el ratón aparecería bajo el puntero justo en el momento en que el usuario mira a otra parte. Ponga el comentario de avance en un statictext o una statusbar junto a la barra.


Métodos #

MétodoFunción
of_reset ( )Restablece todas las propiedades a sus valores predeterminados (barra lineal, escala 0–100, valor 0, porcentaje oculto, color del tema). Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_set_redraw (boolean)Agrupa una ráfaga de modificaciones en una sola representación. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_save_as_png (string) · of_save_as_jpg (string)Exporta la representación como imagen. Devuelve 0 una vez escrita la imagen, -4 si la escritura falla, -2 si el componente no está creado

Eventos #

EventoSe activa cuando
ue_ready ( )El componente ha terminado de cargarse; todo lo enviado antes se ha reproducido
ue_runtime_missing ( )El runtime WebView2 está ausente: el componente permanece vacío
ue_bg_color (long al_color)El componente ha calculado el color de fondo de su tema; el userobject ya lo ha adoptado (backcolor)

Ejemplos #

Progreso determinado con porcentaje #

// Show the percentage, then move the bar
uo_progress.ib_label = true
uo_progress.id_value = 75     // the bar fills up to three quarters

Progreso indeterminado (duración desconocida) #

// When the duration is unknown : the bar animates continuously
// and ignores id_value
uo_progress.ib_indeterminate = true
// Once the duration is known, switch back to determinate mode
uo_progress.ib_indeterminate = false
uo_progress.id_value = 20

Anillo circular #

// Display mode : linear (bar) or circular (ring)
uo_progress.is_mode  = u_pbt_progressbar.MODE_CIRCULAR
uo_progress.ib_label = true
uo_progress.id_value = 40

Escala personalizada #

// Progress is not always a percentage : give the real scale
uo_progress.id_minimum = 0
uo_progress.id_maximum = ll_row_count    // e.g. 4820 rows to import

// Then report the row being processed
uo_progress.id_value = ll_current_row // raw value, not a percentage

El porcentaje mostrado por ib_label sigue calculándose con respecto a esta escala.

Color personalizado y control del valor #

// Show the percentage next to the bar
uo_progress.ib_label = true

// The fill color accepts a standard PowerBuilder RGB()
uo_progress.il_color = RGB(/*red*/ 16, /*green*/ 137, /*blue*/ 62)

// The bar displays a value, it never computes one : your code moves it
uo_progress.id_value = 0
// timer event of the window, once a second
if uo_progress.id_value >= 100 then
	Timer(0)   // done : your code knows, it is the one that decided
	uo_status.of_panel(/*key*/ "main").is_text = "Import complete"
else
	uo_progress.id_value = uo_progress.id_value + 10
end if

Etiqueta personalizada y estado de error #

// The label counts rows instead of a bare percentage
uo_progress.ib_label = true
uo_progress.id_maximum = 4820
uo_progress.id_value = 3120
uo_progress.is_label_format = "{value} of {max} rows ({percent})"

// The import failed at this row : the bar turns red where it stands
uo_progress.is_state = u_pbt_progressbar.STATE_ERROR

Buenas prácticas #

Heredado de la base común #

Estos miembros existen en todos los componentes visuales — no son propios de este. Se detallan una sola vez, en los capítulos transversales; esta tabla solo dice dónde leerlos.

MiembrosFunciónDetallado en
of_resetPoner el componente a cero3.6 Poner un componente a cero: of_reset()
of_register_shortcut · of_clear_shortcutsAtajos de teclado del componente3.5 Los atajos de teclado
of_is_created · of_is_ready · of_get_last_errorSi ha nacido, si está listo, qué ha fallado3.7 Diagnóstico
of_save_as_png · of_save_as_jpgExportar el render como imagen3.8 Exportar la representación como imagen
of_set_redrawAgrupar los cambios en un solo repintado3.10 Buenas prácticas
of_preload_iconsIconos mostrados sin retardoVisualización instantánea: of_icon
of_set_translationTraducir una etiqueta del componente5.2 Adaptar una etiqueta: of_set_translation
of_focus_webviewDar el foco al componente6.4 Teclado y foco
of_print · of_print_to_pdfImprimir, o escribir un PDF6.9 Imprimir
of_set_property · of_get_property · of_component_nameControlar una propiedad por su nombre3.1 El motor de propiedades

Dos ayudas no se heredan: of_icon y of_escape_markup viven en n_pbt_utils. Declare uno — n_pbt_utils lnv_utils, nada que crear — y llámelas sobre él.


← Referencia de componentes · Índice de la guía