PBToolboxAI v4 ← 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 #

// 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

Propriedades #

PropriedadeTipoPredefiniçãoFunção
id_valuedouble0Avanço atual, valor BRUTO na escala id_minimum … id_maximum, relido tal como o atribuiu por último (sem limites). A etiqueta arredonda para baixo: 99,6 mostra 99 %, 100 % significa terminado. Atribuí-lo em cada linha de um ciclo quase não custa nada: a barra só é redesenhada quando muda o que mostra (uma décima de ponto percentual)
id_minimumdouble0Limite inferior da escala. Um double: uma fração 0..1 é uma escala válida
id_maximumdouble100Limite superior da escala. Um double: um número de bytes acima de 2 GB é uma escala válida. Intervalo vazio ou invertido (mín ≥ máx): 100 % assim que o valor atinge o máximo, 0 % antes — um lote vazio (id_maximum = 0, id_value = 0) aparece terminado
is_modestring"linear"Forma do componente: linear (barra horizontal que ocupa toda a largura do controlo e segue a sua altura: cabe onde estava uma HProgressBar) ou circular (anel) — constantes MODE_LINEAR, MODE_CIRCULAR. Um valor desconhecido volta a linear
ib_indeterminatebooleanfalseModo espera: uma barra que desliza, ou um arco fixo que gira no modo circular; id_value é ignorada mas mantida. Se o Windows pedir menos animações, a espera pulsa em vez de se mover
ib_labelbooleanfalseApresenta a percentagem ao lado da barra ou no centro do anel, no idioma de apresentação («50 %» em francês, «50%» em inglês). is_label_format muda o que diz
is_label_formatstring""O que a etiqueta diz (ib_label). Vazio = a percentagem. Caso contrário, um texto em que {percent}, {value}, {min} e {max} são substituídos, com os números escritos no idioma de apresentação; o resto é escrito tal como está, em texto simples. O leitor de ecrã diz o mesmo texto
is_statestring"normal"O significado da barra, como a barra de progresso do Windows: STATE_NORMAL (cor de destaque), STATE_PAUSED (amarelo, o processamento está em espera) ou STATE_ERROR (vermelho, o processamento falhou). Pausa e erro assumem as cores de estado do tema, claro ou escuro, e prevalecem sobre il_color; uma barra de espera deixa de se mover. Um valor desconhecido equivale a STATE_NORMAL
il_colorlong-1Cor de preenchimento, no formato RGB() do PowerBuilder. -1 = cor de destaque do tema. Em pausa ou em erro (is_state), prevalece a cor de estado
is_theme_stylestring""Estilo visual do componente (constantes THEME_STYLE_*); vazio = o da aplicação, seguido a cada mudança
is_theme_modestring""Variante clara ou escura (constantes THEME_MODE_*); vazio = a da aplicação, seguida a cada mudança
il_theme_accentlong-1Cor de destaque deste componente (-1 = destaque da aplicação, ou o 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). Devolve 0 depois de aplicado, -2 se o componente não estiver criado
of_set_redraw (boolean)Agrupa uma rajada de alterações numa única representação. Devolve 0 depois de aplicado, -2 se o componente não estiver criado
of_save_as_png (string) · of_save_as_jpg (string)Exporta a representação como imagem. Devolve 0 depois de a imagem ser escrita, -4 se a escrita falhar, -2 se o componente não estiver criado

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 #

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

Progresso indeterminado (duração desconhecida) #

// 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

Anel 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

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

Cor personalizada e controlo do 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 e estado de erro #

// 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

Boas práticas #

Herdado da base comum #

Estes membros existem em todos os componentes visuais — não são próprios deste. São detalhados uma só vez, nos capítulos transversais; esta tabela apenas diz onde os ler.

MembrosFunçãoDetalhado em
of_resetRepor o componente a zero3.6 Repor um componente a zero: of_reset()
of_register_shortcut · of_clear_shortcutsAtalhos de teclado do componente3.5 Os atalhos de teclado
of_is_created · of_is_ready · of_get_last_errorSe nasceu, se está pronto, o que falhou3.7 Diagnóstico
of_save_as_png · of_save_as_jpgExportar a renderização como imagem3.8 Exportar a representação como imagem
of_set_redrawAgrupar as alterações num único repinte3.10 Boas práticas
of_preload_iconsÍcones mostrados sem atrasoApresentação instantânea: of_icon
of_set_translationTraduzir uma legenda do componente5.2 Adaptar uma etiqueta: of_set_translation
of_focus_webviewDar o foco ao componente6.4 Teclado e focus
of_print · of_print_to_pdfImprimir, ou escrever um PDF6.9 Imprimir
of_set_property · of_get_property · of_component_nameControlar uma propriedade pelo nome3.1 O motor de propriedades

Duas ajudas não são herdadas: of_icon e of_escape_markup vivem em n_pbt_utils. Declare um — n_pbt_utils lnv_utils, nada a criar — e chame-as nele.


← Referência dos componentes · Índice do guia