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

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

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)
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
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
ib_labelbooleanfalseMostra la percentuale accanto alla barra o al centro dell'anello, nella lingua di visualizzazione («50 %» in francese, «50%» in inglese). is_label_format cambia ciò che dice
is_label_formatstring""Ciò che dice l'etichetta (ib_label). Vuoto = la percentuale. Altrimenti un testo in cui {percent}, {value}, {min} e {max} vengono sostituiti, con i numeri scritti nella lingua di visualizzazione; il resto è scritto così com'è, come testo semplice. Il lettore di schermo dice lo stesso testo
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_color; una barra di attesa smette di muoversi. Un valore sconosciuto vale STATE_NORMAL
il_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
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.


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_label = 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_label = true
uo_progress.id_value = 40

Scala personalizzata #

// 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_label resta calcolata rispetto a questa scala.

Colore personalizzato e pilotaggio del valore #

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

Etichetta personalizzata e stato di errore #

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

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à

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