PBToolboxAI v5 ← Site

progressbar — u_pbt_progressbar #

← Riferimento dei componenti · Sommario della guida

Barra di avanzamento a tema: barra orizzontale o anello, valore numerico o animazione di attesa, percentuale visualizzata, colore a scelta.

▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Progress: l'anteprima, il codice che lo produce e questa pagina, affiancati.


In breve #

Userobjectu_pbt_progressbar
Classe degli item— (componente senza item)
Serve perMostrare l'avanzamento di un'elaborazione lunga: importazione, esportazione, stampa, chiamata al server
Due utilizzideterminato (l'avanzamento è noto) o indeterminato (si sa soltanto che il lavoro è in corso)

Avvio rapido #

// Local variables
long ll_total = 4820

// Window open event : the readout, and the scale of the job
uo_progress.ib_show_value = true     // shows the percentage next to the bar
uo_progress.id_maximum = ll_total    // the scale of the job : nothing to compute
// Local variables
long ll_i, ll_total = 4820

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

Proprietà #

ProprietàTipoPredefinitoRuolo
id_valuedouble0Avanzamento corrente, valore GREZZO nella scala id_minimum … id_maximum, riletto come l'avete impostato per ultimo (non limitato). L'etichetta arrotonda per difetto: 99,6 mostra 99 %, 100 % significa terminato. Assegnarlo a ogni riga di un ciclo non costa quasi nulla: la barra viene ridisegnata solo quando cambia ciò che mostra (un decimo di punto percentuale), o a ogni valore quando is_format lo scrive
id_minimumdouble0Limite inferiore della scala. Un double: una frazione 0..1 è una scala valida
id_maximumdouble100Limite superiore della scala. Un double: un numero di byte oltre 2 GB è una scala valida. Intervallo vuoto o invertito (min ≥ max): 100 % non appena il valore raggiunge il massimo, 0 % prima — un lotto vuoto (id_maximum = 0, id_value = 0) appare terminato
is_modestring"linear"Forma del componente: linear (barra orizzontale che occupa tutta la larghezza del controllo e ne segue l'altezza: sta dove c'era una HProgressBar) o circular (anello) — costanti MODE_LINEAR, MODE_CIRCULAR. Un valore sconosciuto torna a linear; la barra si mette in verticale con is_orientation
is_orientationstring"horizontal"Direzione della barra lineare, con le parole dell'indicatore lineare: horizontal (predefinito) o vertical — costanti ORIENTATION_HORIZONTAL, ORIENTATION_VERTICAL. Verticale, la barra si riempie dal basso verso l'alto (un livello, un serbatoio, una coda), con la lettura sotto: sta dove c'era una VProgressBar. L'anello la ignora. Un valore sconosciuto torna a horizontal
ib_indeterminatebooleanfalseModalità attesa: una barra che scorre, o un arco fisso che ruota in modalità circolare; id_value viene ignorata ma conservata. Se Windows chiede meno animazioni, l'attesa pulsa invece di muoversi. Con ib_show_value, la lettura scrive solo is_unit: il testo dell'attesa («Connecting...»). In pausa o in errore (is_state), l'attesa si ferma: una barra (un anello) piena del colore dello stato, come la barra delle applicazioni di Windows
ib_show_valuebooleanfalseMostra la lettura accanto alla barra o al centro dell'anello: la percentuale nella lingua di visualizzazione («50 %» in francese, «50%» in inglese), o il valore scritto da is_format, seguito da is_unit. Una lettura lunga viene tagliata con «…» invece di schiacciare la barra (la traccia conserva il 40 % del controllo); nell'anello l'unità passa su una seconda riga e l'insieme si riduce finché ci sta, l'unità tolta quando manca lo spazio. In attesa (ib_indeterminate) si scrive solo is_unit
is_formatstring""Formato di visualizzazione del valore nella lettura (ib_show_value), nella sintassi di un formato DataWindow, come per gli indicatori (#,##0, #,##0.00, $#,##0). I separatori sono quelli della lingua di visualizzazione. Una maschera che contiene % scrive la parte compiuta, non il valore: 0.0% dà «35.0%» per 1.687 righe su 4.820, su qualsiasi scala, arrotondata per difetto come la percentuale (100 % = finito). Vuoto = la percentuale. Una volta impostato, ogni valore viene inviato alla barra, poiché la lettura lo scrive. Il lettore di schermo dice lo stesso testo
is_unitstring""Scritto dopo la lettura, separato da uno spazio: dopo il valore, o dopo la percentuale quando is_format è vuoto (of 500 rows, done). Testo semplice, mai marcatura. In attesa è l'unico testo della lettura (Connecting...); nell'anello ha una riga propria
is_statestring"normal"Il significato della barra, come la barra di avanzamento di Windows: STATE_NORMAL (colore d'accento), STATE_PAUSED (giallo, l'elaborazione è in attesa) o STATE_ERROR (rosso, l'elaborazione è fallita). Pausa ed errore prendono i colori di stato del tema, chiaro o scuro, e prevalgono su il_value_color. Una barra di attesa (ib_indeterminate) in pausa o in errore si ferma e diventa piena del colore dello stato, come la barra delle applicazioni di Windows. Il lettore di schermo dice lo stato prima del valore («Error, 64%»). Un valore sconosciuto vale STATE_NORMAL
il_value_colorlong-1Colore di riempimento, nel formato RGB() di PowerBuilder. -1 = colore d'accento del tema. In pausa o in errore (is_state) prevale il colore di stato. Solo RGB(): un colore di sistema di PowerBuilder (Highlight, ButtonFace…) non ha un colore proprio, viene ignorato (la barra mantiene l'accento, la proprietà si rilegge -1)
is_accessible_namestring""Come il lettore di schermo chiama questa barra, come l'AccessibleName di una HProgressBar. Vuoto = «Progress» nella lingua di visualizzazione: due barre nella stessa finestra (un download, un'importazione) si distinguono solo per il nome. Testo semplice, mai marcatura
is_theme_stylestring""Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio
is_theme_modestring""Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio
il_theme_accentlong-1Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello del tema)

Questo componente non espone tooltip (is_tooltip, is_super_tooltip_*): una barra di avanzamento si legge da sé, e un'etichetta al passaggio del mouse arriverebbe sotto il puntatore proprio nel momento in cui l'utente guarda altrove. Metta il commento sullo stato di avanzamento in uno statictext o in una statusbar accanto alla barra. of_set_property("tooltip", …) (e super_tooltip_*) restituisce -5: anche la porta per nome è chiusa.


Metodi #

MetodoRuolo
of_reset ( )Riporta tutte le proprietà ai valori predefiniti (barra lineare, scala 0–100, valore 0, percentuale nascosta, colore del tema). Restituisce 0 una volta applicato, -2 se il componente non è creato
of_set_redraw (boolean)Raggruppa una serie di modifiche in un unico rendering. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_save_as_png (string) · of_save_as_jpg (string)Esporta il rendering come immagine. Restituisce 0 una volta scritta l'immagine, -4 se la scrittura fallisce, -2 se il componente non è creato

Event #

EventAttivato quando
ue_ready ( )Il componente ha terminato il caricamento; tutto ciò che è stato inviato prima è stato riprodotto
ue_runtime_missing ( )Il runtime WebView2 è assente: il componente resta vuoto
ue_bg_color (long al_color)Il componente ha calcolato il colore di sfondo del proprio tema; l'userobject lo ha già adottato (backcolor)

Esempi #

Avanzamento determinato con percentuale #

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

Avanzamento indeterminato (durata sconosciuta) #

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

Anello circolare #

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

Scala personalizzata #

// Local variables
long ll_row_count = 4820, ll_current_row = 1687

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

La percentuale mostrata da ib_show_value resta calcolata rispetto a questa scala.

Colore personalizzato e pilotaggio del valore #

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

// The fill color accepts a standard PowerBuilder RGB()
uo_progress.il_value_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

Valore formattato, unità e stato di errore #

// The readout counts rows instead of a bare percentage
uo_progress.ib_show_value = true
uo_progress.id_maximum = 4820
uo_progress.id_value = 3120

// The value with a PowerBuilder mask, then what it counts
uo_progress.is_format = "#,##0"
uo_progress.is_unit = "of 4,820 rows"

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

Una percentuale con decimali #

// The readout says the share done with one decimal : a mask in % writes the percentage
uo_progress.ib_show_value = true
uo_progress.id_maximum = 4820
uo_progress.id_value = 1687
uo_progress.is_format = "0.0%"     // 35.0%

Un'attesa che fallisce #

// A job of unknown length : a busy bar, with the text of the wait
uo_progress.ib_indeterminate = true
uo_progress.ib_show_value = true
uo_progress.is_unit = "Connecting to the server..."
// The connection failed : the busy bar stops, full and red, and says why
uo_progress.is_state = u_pbt_progressbar.STATE_ERROR
uo_progress.is_unit = "Connection lost"

Una barra verticale con un nome proprio #

// A level that fills from the bottom up, where a VProgressBar stood
uo_progress.is_orientation = u_pbt_progressbar.ORIENTATION_VERTICAL
uo_progress.ib_show_value = true
uo_progress.id_value = 35

// Two bars in one window : the screen reader tells them apart by their name
uo_progress.is_accessible_name = "Tank level"

Buone pratiche #

Ereditato dalla base comune #

Questi membri esistono su tutti i componenti visivi — non sono propri di questo. Sono descritti una sola volta, nei capitoli trasversali; questa tabella dice solo dove leggerli.

MembriRuoloDescritto in
of_resetRiportare il componente a zero3.6 Riportare un componente a zero: of_reset()
of_register_shortcut · of_clear_shortcutsScorciatoie da tastiera del componente3.5 Le scorciatoie da tastiera
of_is_created · of_is_ready · of_get_last_errorSe è nato, se è pronto, cosa è fallito3.7 Diagnostica
of_save_as_png · of_save_as_jpgEsportare il rendering in immagine3.8 Esportare il rendering come immagine
of_set_redrawRaggruppare le modifiche in un solo ridisegno3.10 Buone pratiche
of_preload_iconsIcone mostrate senza ritardoVisualizzazione istantanea: of_icon
of_set_translationTradurre una dicitura del componente5.2 Adattare un'etichetta: of_set_translation
of_focus_webviewDare il focus al componente6.4 Tastiera e focus
of_print · of_print_to_pdfStampare, o scrivere un PDF6.9 Stampare
of_set_property · of_get_property · of_component_namePilotare una proprietà per nome3.1 Il motore delle proprietà
is_accessible_name · is_accessible_descriptionIl nome e la descrizione che dice un lettore di schermo3.4 Proprietà ed event opzionali

Due aiuti non sono ereditati: of_icon e of_escape_markup vivono su n_pbt_utils. Ne dichiari uno — n_pbt_utils lnv_utils, niente da creare — e li chiami su di esso.


← Riferimento dei componenti · Sommario della guida