PBToolboxAI v1 ← Site

progressbar — u_pbt_progressbar #

← Referência dos componentes · Índice do guia

Barra de progresso com tema: barra horizontal ou anel, valor quantificado ou animação de espera, percentagem apresentada, cor livre.

Ver ao vivo — Aplicação de demonstração, mosaico Progress: a pré-visualização, o código que o produz e esta página, lado a lado.


Em resumo #

Userobjectu_pbt_progressbar
Classe de items— (componente sem items)
Serve paraMostrar o avanço de um processamento longo: importação, exportação, impressão, chamada ao servidor
Duas utilizaçõesdeterminada (o avanço é conhecido) ou indeterminada (apenas se sabe que está a trabalhar)

Início rápido #

// event open da janela
uo_progression.ib_label = true      // apresenta a percentagem sobre a barra
uo_progression.id_value = 0         // ponto de partida
// Durante o processamento : uma simples atribuicao desloca a barra
for ll_i = 1 to ll_total
    of_traiter_ligne(ll_i)
    uo_progression.id_value = (ll_i / ll_total) * 100
next

Propriedades #

PropriedadeTipoPredefiniçãoFunção
id_valuedouble0Avanço atual, expresso na escala il_minimumil_maximum
il_minimumlong0Limite inferior da escala
il_maximumlong100Limite superior da escala
is_modestring"linear"Forma do componente: linear (barra horizontal) ou circular (anel) — constantes MODE_LINEAR, MODE_CIRCULAR
ib_indeterminatebooleanfalseModo espera: animação contínua, id_value é ignorada
ib_labelbooleanfalseApresenta a percentagem sobre a barra ou no centro do anel
il_colorlong-1Cor de preenchimento, no formato RGB() do PowerBuilder. -1 = cor do tema
is_theme_stylestringfluentEstilo visual do componente (constantes THEME_STYLE_*)
is_theme_modestringlightVariante clara ou escura (constantes THEME_MODE_*)
il_theme_accentlong-1Cor de destaque deste componente (-1 = destaque do tema)

Este componente não publica tooltip (is_tooltip, is_super_tooltip_*): uma barra de progresso lê-se por si própria, e uma etiqueta ao passar o rato surgiria por baixo do ponteiro no preciso momento em que o utilizador olha para outro lado. Coloque o comentário de progresso num statictext ou numa statusbar ao lado da barra.


Métodos #

MétodoFunção
of_reset ( )Repõe todas as propriedades nos respetivos valores por omissão (barra linear, escala 0–100, valor 0, percentagem oculta, cor do tema)
of_set_redraw (boolean)Agrupa uma rajada de alterações numa única representação
of_save_as_png (string) · of_save_as_jpg (string)Exporta a representação como imagem

Eventos #

EventoAcionado quando
ue_ready ( )O componente terminou o carregamento; tudo o que foi enviado antes foi reproduzido
ue_runtime_missing ( )O runtime WebView2 está ausente: o componente permanece vazio
ue_bg_color (long al_color)O componente calculou a cor de fundo do respetivo tema; o userobject já a adotou (backcolor)

Exemplos #

Progresso determinado com percentagem #

uo_progression.ib_label = true
uo_progression.id_value = 75      // a barra enche-se ate tres quartos

Progresso indeterminado (duração desconhecida) #

// Quando a duracao e desconhecida : a barra anima-se continuamente
// e ignora id_value
uo_progression.ib_indeterminate = true
// Assim que a duracao for conhecida, volta-se ao modo determinado
uo_progression.ib_indeterminate = false
uo_progression.id_value = 20

Anel circular #

// Modo de apresentacao : linear (barra) ou circular (anel)
uo_progression.is_mode  = uo_progression.MODE_CIRCULAR
uo_progression.ib_label = true
uo_progression.id_value = 40

Escala personalizada #

// O avanco nem sempre e uma percentagem : indica-se a escala real
uo_progression.il_minimum = 0
uo_progression.il_maximum = ll_nb_lignes    // ex : 4820 linhas a importar

uo_progression.id_value = ll_ligne_courante // valor bruto, nao uma percentagem

A percentagem apresentada por ib_label continua a ser calculada em relação a esta escala.

Cor personalizada e controlo do valor #

uo_progression.ib_label = true

// A cor de preenchimento aceita um RGB() padrao do PowerBuilder
uo_progression.il_color = RGB(/*vermelho*/ 16, /*verde*/ 137, /*azul*/ 62)

// A barra mostra um valor, nao o calcula : e o seu codigo que o faz avancar
uo_progression.id_value = 0
// evento timer da janela, uma vez por segundo
if uo_progression.id_value >= 100 then
	Timer(0)   // terminado : o seu codigo sabe-o, foi ele que o decidiu
	uo_statut.of_item("main").is_text = "Importação concluída"
else
	uo_progression.id_value = uo_progression.id_value + 10
end if

Boas práticas #


← Referência dos componentes · Índice do guia