PBToolboxAI v4 ← Site

progressbar — u_pbt_progressbar #

← Komponentenreferenz · Inhalt des Handbuchs

Fortschrittsbalken im Design: waagerechter Balken oder Ring, Zahlenwert oder Warteanimation, angezeigter Prozentsatz, frei wählbare Farbe.

▶ Live ansehen — Demoanwendung, Kachel Progress: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.


Auf einen Blick #

Userobjectu_pbt_progressbar
Item-Klasse— (Komponente ohne Items)
WofürDen Fortschritt eines langen Vorgangs zeigen: Import, Export, Druck, Serveraufruf
Zwei Einsatzartenbestimmt (der Fortschritt ist bekannt) oder unbestimmt (man weiß nur, dass gearbeitet wird)

Schnellstart #

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

Eigenschaften #

EigenschaftTypStandardZweck
id_valuedouble0Aktueller Fortschritt, ein ROHWERT auf der Skala id_minimum … id_maximum, so zurückgelesen, wie Sie ihn zuletzt gesetzt haben (nicht begrenzt). Die Beschriftung rundet ab: 99,6 zeigt 99 %, 100 % heißt fertig. Ihn in einer Schleife bei jeder Zeile zu setzen, kostet fast nichts: der Balken wird nur neu gezeichnet, wenn sich ändert, was er zeigt (ein Zehntelprozent)
id_minimumdouble0Untere Grenze der Skala. Ein double: ein Bruchteil 0..1 ist eine gültige Skala
id_maximumdouble100Obere Grenze der Skala. Ein double: eine Byteanzahl über 2 GB ist eine gültige Skala. Leerer oder umgekehrter Bereich (min ≥ max): 100 %, sobald der Wert das Maximum erreicht, davor 0 % — ein leerer Stapel (id_maximum = 0, id_value = 0) wird als beendet angezeigt
is_modestring"linear"Form der Komponente: linear (waagerechter Balken, der die ganze Breite des Controls einnimmt und seiner Höhe folgt: er passt dorthin, wo eine HProgressBar stand) oder circular (Ring) — Konstanten MODE_LINEAR, MODE_CIRCULAR. Ein unbekannter Wert fällt auf linear zurück
ib_indeterminatebooleanfalseWarte-Modus: ein gleitender Balken oder im Kreismodus ein fester, sich drehender Bogen; id_value wird ignoriert, aber beibehalten. Verlangt Windows weniger Animationen, pulsiert die Anzeige statt sich zu bewegen
ib_labelbooleanfalseZeigt den Prozentsatz neben dem Balken oder in der Mitte des Rings an, in der Anzeigesprache („50 %“ auf Französisch, „50%“ auf Englisch). is_label_format ändert, was angezeigt wird
is_label_formatstring""Was die Beschriftung sagt (ib_label). Leer = der Prozentsatz. Sonst ein Text, in dem {percent}, {value}, {min} und {max} ersetzt werden, Zahlen in der Anzeigesprache geschrieben; der Rest wird unverändert als reiner Text geschrieben. Der Bildschirmleser sagt denselben Text
is_statestring"normal"Die Bedeutung des Balkens, wie beim Windows-Fortschrittsbalken: STATE_NORMAL (Akzentfarbe), STATE_PAUSED (gelb, der Vorgang wartet) oder STATE_ERROR (rot, der Vorgang ist fehlgeschlagen). Pause und Fehler nehmen die Statusfarben des Designs an, hell wie dunkel, und haben Vorrang vor il_color; ein Wartebalken hält an. Ein unbekannter Wert gilt als STATE_NORMAL
il_colorlong-1Füllfarbe im PowerBuilder-Format RGB(). -1 = Akzentfarbe aus dem Design. Bei Pause oder Fehler (is_state) hat die Statusfarbe Vorrang
is_theme_stylestring""Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen
is_theme_modestring""Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen
il_theme_accentlong-1Akzentfarbe dieser Komponente (-1 = Akzent der Anwendung, sonst der des Designs)

Diese Komponente veröffentlicht keinen Tooltip (is_tooltip, is_super_tooltip_*): Ein Fortschrittsbalken spricht für sich selbst, und eine Beschriftung beim Überfahren erschiene genau in dem Moment unter dem Zeiger, in dem der Anwender woanders hinsieht. Setzen Sie den Kommentar zum Fortschritt in einen statictext oder eine statusbar neben den Balken.


Methoden #

MethodeZweck
of_reset ( )Setzt alle Eigenschaften auf ihren Standard zurück (linearer Balken, Skala 0–100, Wert 0, Prozentsatz ausgeblendet, Farbe aus dem Design). Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist
of_set_redraw (boolean)Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist
of_save_as_png (string) · of_save_as_jpg (string)Exportiert die Darstellung als Bild. Liefert 0 nach dem Schreiben des Bildes, -4 wenn das Schreiben fehlschlägt, -2 wenn die Komponente nicht erzeugt ist

Events #

EventAusgelöst wenn
ue_ready ( )Die Komponente ist fertig geladen; alles zuvor Gesendete wurde nachgespielt
ue_runtime_missing ( )Die WebView2-Runtime fehlt: die Komponente bleibt leer
ue_bg_color (long al_color)Die Komponente hat ihre Design-Hintergrundfarbe berechnet; das Userobject hat sie bereits übernommen (backcolor)

Beispiele #

Bestimmter Fortschritt mit Prozentsatz #

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

Unbestimmter Fortschritt (unbekannte Dauer) #

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

Kreisförmiger Ring #

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

Eigene Skala #

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

Der von ib_label angezeigte Prozentsatz wird weiterhin anhand dieser Skala berechnet.

Eigene Farbe und Steuerung des Werts #

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

Eigene Beschriftung und Fehlerzustand #

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

Best Practices #

Vom gemeinsamen Sockel geerbt #

Diese Mitglieder gibt es bei jeder visuellen Komponente — sie sind nicht dieser eigen. Sie werden einmal in den übergreifenden Kapiteln beschrieben; diese Tabelle sagt nur, wo man sie liest.

MitgliederRolleBeschrieben in
of_resetDie Komponente zurücksetzen3.6 Eine Komponente zurücksetzen: of_reset()
of_register_shortcut · of_clear_shortcutsTastenkürzel der Komponente3.5 Tastenkombinationen
of_is_created · of_is_ready · of_get_last_errorOb sie entstanden ist, ob sie bereit ist, was fehlschlug3.7 Diagnose
of_save_as_png · of_save_as_jpgDie Darstellung als Bild exportieren3.8 Die Darstellung als Bild exportieren
of_set_redrawÄnderungen zu einem einzigen Neuzeichnen bündeln3.10 Best Practices
of_preload_iconsSymbole ohne VerzögerungSofortige Anzeige: of_icon
of_set_translationEine Beschriftung der Komponente übersetzen5.2 Eine Beschriftung anpassen: of_set_translation
of_focus_webviewDer Komponente den Fokus geben6.4 Tastatur und Fokus
of_print · of_print_to_pdfDrucken oder ein PDF schreiben6.9 Drucken
of_set_property · of_get_property · of_component_nameEine Eigenschaft über ihren Namen steuern3.1 Die Eigenschaften-Engine

Zwei Helfer werden nicht geerbt: of_icon und of_escape_markup liegen auf n_pbt_utils. Deklarieren Sie eines — n_pbt_utils lnv_utils, nichts zu erzeugen — und rufen Sie sie darauf auf.


← Komponentenreferenz · Inhalt des Handbuchs