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

Userobject | `u_pbt_progressbar`
Item-Klasse | — (Komponente ohne Items)
Wofür | Den Fortschritt eines langen Vorgangs zeigen: Import, Export, Druck, Serveraufruf
Zwei Einsatzarten | bestimmt (der Fortschritt ist bekannt) oder unbestimmt (man weiß nur, dass gearbeitet wird)

## Schnellstart #

    // open-Event des Fensters
    uo_progression.ib_label = true      // zeigt den Prozentsatz auf dem Balken an
    uo_progression.id_value = 0         // Ausgangspunkt

    // Waehrend des Vorgangs : eine einfache Zuweisung bewegt den Balken
    for ll_i = 1 to ll_total
        of_traiter_ligne(ll_i)
        uo_progression.id_value = (ll_i / ll_total) * 100
    next

## Eigenschaften #

Eigenschaft | Typ | Standard | Zweck
--- | --- | --- | ---
`id_value` | double | `0` | Aktueller Fortschritt, ausgedrückt auf der Skala `il_minimum` … `il_maximum`
`il_minimum` | long | `0` | Untere Grenze der Skala
`il_maximum` | long | `100` | Obere Grenze der Skala
`is_mode` | string | `"linear"` | Form der Komponente: `linear` (waagerechter Balken) oder `circular` (Ring) — Konstanten `MODE_LINEAR`, `MODE_CIRCULAR`
`ib_indeterminate` | boolean | `false` | Warte-Modus: fortlaufende Animation, `id_value` wird ignoriert
`ib_label` | boolean | `false` | Zeigt den Prozentsatz auf dem Balken oder in der Mitte des Rings an
`il_color` | long | `-1` | Füllfarbe im PowerBuilder-Format `RGB()`. `-1` = Farbe aus dem Design
`is_theme_style` | string | `fluent` | Visueller Stil der Komponente (Konstanten `THEME_STYLE_*`)
`is_theme_mode` | string | `light` | Helle oder dunkle Variante (Konstanten `THEME_MODE_*`)
`il_theme_accent` | long | `-1` | Akzentfarbe dieser Komponente (`-1` = Akzent 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 #

Methode | Zweck
--- | ---
`of_reset ( )` | Setzt alle Eigenschaften auf ihren Standard zurück (linearer Balken, Skala 0–100, Wert 0, Prozentsatz ausgeblendet, Farbe aus dem Design)
`of_set_redraw (boolean)` | Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen
`of_save_as_png (string)` · `of_save_as_jpg (string)` | Exportiert die Darstellung als Bild

## Events #

Event | Ausgelö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 #

    uo_progression.ib_label = true
    uo_progression.id_value = 75      // der Balken fuellt sich zu drei Vierteln

### Unbestimmter Fortschritt (unbekannte Dauer) #

    // Wenn die Dauer unbekannt ist : der Balken animiert fortlaufend
    // und ignoriert id_value
    uo_progression.ib_indeterminate = true

    // Sobald die Dauer bekannt ist, zurueck in den bestimmten Modus
    uo_progression.ib_indeterminate = false
    uo_progression.id_value = 20

### Kreisförmiger Ring #

    // Anzeigemodus : linear (Balken) oder circular (Ring)
    uo_progression.is_mode  = uo_progression.MODE_CIRCULAR
    uo_progression.ib_label = true
    uo_progression.id_value = 40

### Eigene Skala #

    // Der Fortschritt ist nicht immer ein Prozentsatz : die echte Skala angeben
    uo_progression.il_minimum = 0
    uo_progression.il_maximum = ll_nb_lignes    // z. B. 4820 zu importierende Zeilen

    uo_progression.id_value = ll_ligne_courante // Rohwert, kein Prozentsatz

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

### Eigene Farbe und Steuerung des Werts #

    uo_progression.ib_label = true

    // Die Fuellfarbe akzeptiert ein normales PowerBuilder-RGB()
    uo_progression.il_color = RGB(/*rot*/ 16, /*gruen*/ 137, /*blau*/ 62)

    // Die Leiste zeigt einen Wert an, sie berechnet ihn nicht : Ihr Code bewegt ihn
    uo_progression.id_value = 0

    // timer-Event des Fensters, einmal pro Sekunde
    if uo_progression.id_value >= 100 then
    	Timer(0)   // fertig : Ihr Code weiss es, er hat es entschieden
    	uo_statut.of_item("main").is_text = "Import abgeschlossen"
    else
    	uo_progression.id_value = uo_progression.id_value + 10
    end if

## Best Practices #

- Wählen Sie den Modus danach, was Sie wissen: unbestimmt, solange die Menge unbekannt ist, bestimmt, sobald sie feststeht.
- Ziehen Sie `il_minimum` / `il_maximum` dem manuellen Berechnen eines Prozentsatzes vor: Beschriftung und Anzeige folgen von selbst.
- Lassen Sie `il_color` auf `-1`, damit der Balken sowohl dem hellen als auch dem dunklen Design folgt; legen Sie eine Farbe nur fest, wenn sie eine Bedeutung trägt (Grün = Erfolg, Rot = Warnung).
- Eine lange PowerScript-Schleife, die nicht abgibt, friert die Anzeige ein: Lassen Sie die Nachrichtenschleife zwischen zwei Losen atmen (siehe FAQ).
- Rufen Sie `of_reset()` auf, bevor Sie denselben Balken für einen anderen Vorgang wiederverwenden.

← Komponentenreferenz · Inhalt des Handbuchs