statictext — u_pbt_statictext #
← Komponentenreferenz · Inhalt des Handbuchs
Rich-Text-Block: Auszeichnung, Ausrichtungen, klickbare Links und Aktionen, Kopfzeilen-Optik, Laufschriftmodus (Marquee) und Ablagebereich für Dateien.
▶ Live ansehen — Demoanwendung, Kachel Statictext: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.
Auf einen Blick #
| Userobject | u_pbt_statictext |
| Item-Klasse | — (Komponente ohne Items) |
| Wofür | Ein PowerBuilder-statictext durch einen formatierten, klickbaren Textblock ersetzen, der als Kopfzeile, Laufschriftband oder Ablagebereich dienen kann |
| Opt-in-Optionen | ib_auto_height, ib_auto_width, ib_follow_end, ib_track_mouse, ib_track_cycle, ib_allow_drop, ib_selectable, ib_hover_effect |
Schnellstart #
// open-Event des Fensters
uo_text.is_text = "Willkommen bei [b][accent]PBToolboxAI[/accent][/b][br]" &
+ "Lesen Sie die [hyperlink=https://pbtoolboxai.net]Dokumentation[/hyperlink]."
uo_text.is_align = uo_text.ALIGN_CENTER
uo_text.is_valign = uo_text.VALIGN_CENTER
Der Text akzeptiert die Rich-Text-Auszeichnung: Diese Komponente holt am meisten daraus heraus, denn sie ist die einzige, die [action=…]-Bereiche klickbar macht (ein [hyperlink=…] öffnet sich überall).
Konstanten #
| Konstante | Wert | Für |
|---|---|---|
ALIGN_START · ALIGN_CENTER · ALIGN_END · ALIGN_JUSTIFY | "start" "center" "end" "justify" | is_align |
VALIGN_TOP · VALIGN_CENTER · VALIGN_BOTTOM | "top" "center" "bottom" | is_valign |
start und end sind logisch: Sie folgen der Schreibrichtung (Sprache und RTL). Die physischen Werte left und right werden weiterhin als Aliasnamen akzeptiert.
Eigenschaften #
Text und Formatierung #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
is_text | string | "" | Der angezeigte Text, mit der Rich-Text-Auszeichnung: [b], [i], [u], Farben, [picture=…], [hyperlink=…], [action=…] |
is_align | string | "start" | Horizontale Ausrichtung: ALIGN_START, ALIGN_CENTER, ALIGN_END, ALIGN_JUSTIFY |
is_valign | string | "top" | Vertikale Ausrichtung innerhalb des Steuerelements: VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM |
ib_wrap | boolean | true | Automatischer Zeilenumbruch. false erzwingt eine einzige Zeile |
ib_ellipsis | boolean | false | Kürzt bei ib_wrap = false den Überlauf mit Auslassungspunkten, statt ihn hart abzuschneiden |
ib_ellipsis_tooltip | boolean | false | Opt-in: Wenn der Text nicht in das Feld passt, ihn vollständig in einem Tooltip zeigen (Auszeichnung inbegriffen). Ersetzt nie einen Tooltip, den Sie selbst mit is_tooltip oder is_super_tooltip_* gesetzt haben: Ihrer gewinnt |
is_font_family | string | "" | Standardschriftart des Blocks (leer = Schriftart des Designs) |
ii_font_size | integer | 0 | Standardgröße in Punkt (0 = Größe des Designs) |
il_text_color | long | -1 | Textfarbe als RGB() (-1 = Farbe des Designs). [color]-Tags haben für ihren Abschnitt weiterhin Vorrang |
ii_line_spacing | integer | 0 | Zeilenabstand in Prozent, von 50 bis 400 (150 = 1,5 Zeilen; 0 = Standard). Ein Wert außerhalb dieser Grenzen wird auf die nächste Grenze gesetzt und so zurückgelesen, wie er angewendet wurde |
ib_enabled | boolean | true | Block aktiv oder ausgegraut (Links und Aktionen sind inaktiv, wenn er ausgegraut ist) |
ib_selectable | boolean | false | Opt-in: erlaubt dem Benutzer, den Text auszuwählen und mit Strg+C zu kopieren (standardmäßig ausgeschaltet, wie bei einer Beschriftung). Das Loslassen der Maus nach einer Auswahl löst kein ue_clicked aus |
Blockoptik (die „Kopfzeilen“-Optik) #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
il_back_color | long | -1 | Blockhintergrund als RGB() (-1 = Hintergrund des Designs). Mit ii_corner_radius folgt er der Rundung, und außerhalb der Ecken zeigt der Block die Farbe des Objekts, auf dem er liegt |
il_border_color | long | -1 | Rahmenfarbe (-1 = kein Rahmen) |
ii_border_width | integer | 0 | Rahmenstärke in Pixeln (0 = kein Rahmen) |
ii_corner_radius | integer | 0 | Radius der Eckenrundung, in Pixeln. Rahmen UND Hintergrund il_back_color folgen ihm |
ii_padding | integer | -1 | Innenabstand in Pixeln: -1 = der des Designs (Standard), 0 = kein Abstand (der Text steht bündig mit dem Rand eines benachbarten Feldes), darüber = Pixel |
ib_hover_effect | boolean | false | Opt-in: leichte Abdunklung beim Überfahren mit der Maus (Aufhellung bei einem dunklen Design), für eine Beschriftung, die wie eine Schaltfläche wirkt |
Laufschriftmodus (Marquee) #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
ib_marquee | boolean | false | Verwandelt den Block in ein horizontal laufendes Band |
ii_marquee_speed | integer | 60 | Laufgeschwindigkeit, in Pixeln pro Sekunde (0 = Standardgeschwindigkeit, 60) |
is_marquee_direction | string | MARQUEE_START | Laufrichtung: MARQUEE_START (zum Anfang der Leserichtung hin) oder MARQUEE_END. Die physischen Aliasnamen "left" / "right" werden akzeptiert: sie bleiben physisch, unabhängig von der Leserichtung. Jeder andere Wert gilt als MARQUEE_START und wird so zurückgelesen |
ib_marquee_overflow_only | boolean | false | Opt-in: nur laufen, wenn der Text zu breit für das Feld ist. Ein Laufband, das einen ohnehin lesbaren Text bewegt, ist reines optisches Rauschen. Standardmäßig aus, damit ib_marquee = true weiterhin es läuft bedeutet |
ib_marquee_pause_on_hover | boolean | false | Opt-in: den Lauf anhalten, solange der Zeiger über dem Block steht, damit ein langer Text lesbar bleibt. Die Schleifenposition bleibt erhalten: beim Verlassen springt nichts |
Optionale Interaktionen #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
ib_allow_drop | boolean | false | Opt-in: nimmt aus dem Windows-Explorer abgelegte Dateien an; die vollständigen Pfade kommen über ue_drop_files an. Ein deaktivierter Text (ib_enabled = false) lehnt jedes Ablegen ab |
ib_track_mouse | boolean | false | Opt-in: aktiviert ue_mouse_enter / ue_mouse_leave |
ib_track_cycle | boolean | false | Opt-in: aktiviert ue_cycle, ausgelöst am Ende jedes Laufschrift-Durchlaufs; ohne es läuft der Text lautlos |
ib_auto_height | boolean | false | Opt-in: der Block misst seine ideale Höhe und passt die Größe des Userobjects an; siehe Gemeinsame Basis |
ib_auto_width | boolean | false | Opt-in: das Userobject übernimmt die BREITE seines Textes — die längste Zeile, ohne Umbruch (die [br] zählen), plus Innenabstand und Rahmen; ein neuer Text, eine Schrift oder ein Innenabstand passen sie erneut an, und ue_auto_width nennt die übernommene Breite. Eine Laufschrift (ib_marquee) hat keine natürliche Breite und meldet keine |
ib_follow_end | boolean | false | Opt-in, für ein mit of_append_text geschriebenes Protokoll: die Ansicht bleibt UNTEN, während Zeilen hinzukommen — außer der Leser hat nach oben gescrollt, um eine ältere Zeile zu lesen: er wird nie davon weggerissen |
is_theme_style | string | "" | Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen |
is_theme_mode | string | "" | Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent der Anwendung, sonst der des Designs) |
is_tooltip | string | "" | Einfacher Tooltip beim Überfahren der Komponente |
is_super_tooltip_title | string | "" | Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip) |
is_super_tooltip_text | string | "" | Text des erweiterten Tooltips (Rich-Markup zulässig) |
is_super_tooltip_image | string | "" | Bild des erweiterten Tooltips |
Methoden #
| Methode | Zweck |
|---|---|
of_reset ( ) | Setzt alle Eigenschaften auf ihren Standard zurück und leert den Text. 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 |
of_refresh_parent_color ( ) | Liest die Farbe des Objekts, auf dem der Block liegt, erneut. Mit il_back_color und ii_corner_radius zeigen die abgerundeten Ecken diese Farbe, die beim Setzen dieser beiden Eigenschaften gelesen wird: rufen Sie sie auf, nachdem Sie die BackColor Ihres Fensters geändert oder den Block zu einem anderen Elternobjekt verschoben haben. Liefert 0 nach dem Senden, -2 wenn die Komponente nicht erzeugt ist |
of_scroll_to_end ( ) | Springt an das Ende des Textes. Für ein Protokoll, dessen neueste Zeile unten steht: sonst rutscht sie aus dem Blickfeld, sobald der Text höher wird als der sichtbare Bereich. Liefert 0 nach dem Senden, -2 wenn die Komponente nicht erzeugt ist |
of_append_text (string as_markup) | Fügt EINE Zeile am Ende des Textes hinzu, für ein Protokoll: nur diese Zeile geht an die Komponente und nur sie wird gezeichnet — is_text bei jeder Zeile neu zu schreiben, sendete und zeichnete das ganze Protokoll erneut. as_markup nimmt dasselbe Markup wie is_text; zurückgelesen enthält is_text alle Zeilen, verbunden durch [br]. Mit ib_follow_end bleibt die Ansicht unten. Liefert 0 nach dem Senden, -2 wenn die Komponente nicht erzeugt ist |
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_clicked ( ) | Linksklick auf den Block — nicht ausgelöst auf einem [action]- oder [hyperlink]-Bereich (keine Dopplung), auf der Kopfzeile eines [foldarea] (Zuklappen löst nichts aus) und nicht nach einer Textauswahl |
ue_hyperlink (string as_url) | Eine [hyperlink=url]-Zone wurde angeklickt. Der Browser öffnet sich von selbst: Das Event erreicht Sie zusätzlich, um den Klick zu protokollieren oder mehr damit zu tun |
ue_action (string as_key) | Auf einen [action=id]-Bereich wurde geklickt: Sie hängen dort Ihren eigenen Code ein. Der Bereich ist auch per Tastatur erreichbar: mit Tab hin, dann Eingabe oder Leertaste |
ue_drop_files (string as_files[]) | Dateien wurden aus Windows abgelegt: vollständige Pfade, ein Eintrag pro Datei. Erfordert ib_allow_drop = true |
ue_drag_enter ( ) | Ein Datei-Drag betritt die Komponente (ib_allow_drop) |
ue_drag_leave ( ) | Das Datei-Drag verlässt die Komponente |
ue_auto_height (long al_height) | Der Block hat seine ideale Höhe berechnet — erfordert ib_auto_height = true |
ue_auto_width (long al_width) | Der Block hat eine neue Breite übernommen, in PowerBuilder-Einheiten — erfordert ib_auto_width = true |
ue_rclicked ( ) | Rechtsklick auf den Block |
ue_double_clicked ( ) | Doppelklick auf den Block, wie beim nativen PowerBuilder-StaticText. Die vorausgehenden Einfachklicks werden ebenfalls ausgelöst, in derselben Reihenfolge. Nicht auf einer [action]- oder [hyperlink]-Zone, die einen eigenen Kanal haben |
ue_text_overflow (boolean ab_truncated) | Der Text passt nicht mehr in das Feld — oder wieder. Nur bei Änderung ausgelöst, nie in Serie: ein umbrechender Block gilt als abgeschnitten, wenn er unten beschnitten wird, ein einzeiliger, wenn er seitlich abgeschnitten wird. Behandeln Sie es, um eine Spalte zu verbreitern, eine Mehr anzeigen-Schaltfläche anzubieten oder einfach ib_ellipsis_tooltip einzuschalten |
ue_mouse_enter ( ) | Die Maus tritt ein — erfordert ib_track_mouse = true |
ue_mouse_leave ( ) | Die Maus verlässt den Block — erfordert ib_track_mouse = true |
ue_cycle ( ) | Nur im Laufschriftmodus: der Text hat gerade einen vollständigen Durchlauf beendet (eine Animation INNERHALB des Textes zählt nie als Durchlauf) — erfordert ib_track_cycle = true |
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 #
Eine Abschnittskopfzeile #
Vollflächiger Hintergrund, zentrierter weißer Text und eine an den Inhalt angepasste Höhe: Der Block liest sich wie eine echte Titelleiste.
// Die Anzeige einfrieren, solange alles gesetzt wird
uo_header.of_set_redraw(/*on*/ false)
// Der Titel, zentriert
uo_header.is_text = "[b]Verkaufs-Dashboard"
uo_header.is_align = uo_header.ALIGN_CENTER
// Vollflaechiger Hintergrund und gut lesbarer weisser Text
uo_header.il_back_color = RGB(/*red*/ 60, /*green*/ 110, /*blue*/ 190)
uo_header.il_text_color = RGB(/*red*/ 255, /*green*/ 255, /*blue*/ 255)
uo_header.ii_padding = 14
// Der Block schmiegt sich an seinen Inhalt : er liest sich wie eine Titelleiste
uo_header.ib_auto_height = true
// Alles wird auf einmal gezeichnet
uo_header.of_set_redraw(/*on*/ true)
// ue_auto_height-Event von uo_header
of_reposition_below_header(al_height) // verschiebt den Inhalt unter die Kopfzeile
Rich-Text mit Link und Aktion #
// Ein Link auf eine Webseite und eine Aktion, die Ihre Anwendung behandelt (ue_action)
uo_text.is_text = "Ihre Lizenz läuft am [b]31.12.[/b] ab. " &
+ "[hyperlink=https://pbtoolboxai.net]Mehr erfahren[/hyperlink] " &
+ "oder [action=renew]jetzt verlängern[/action]."
// ue_action-Event von uo_text : (string as_key)
choose case as_key
case "renew" ; of_open_renewal()
end choose
ue_hyperlink ist für URLs gedacht (der Browser öffnet sich von selbst); [action=id] ist die richtige Wahl, wenn der Klick innerhalb Ihrer Anwendung bleiben soll. Die Variante [invisibleaction=id] löst dasselbe ue_action aus, ohne wie ein Link auszusehen.
Ein einklappbarer Block #
// Zwei einklappbare Abschnitte : der zweite beginnt eingeklappt
uo_recap.is_text = "[b]Bestellung 2026-0148[/b][br]" &
+ "[foldarea:[b]Lieferung[/b]]Am 12.07. versandt, innerhalb von 48 Stunden.[/foldarea]" &
+ "[foldarea-closed:[i]Rechtliche Hinweise[/i]]Ruckgabe innerhalb von 14 Tagen moglich.[/foldarea]"
// Der Block schrumpft, wenn ein Abschnitt eingeklappt wird
uo_recap.ib_auto_height = true
Ein [foldarea:Titel] setzt eine anklickbare Kopfzeile über seinen Inhalt: Der Leser klappt den Abschnitt mit einem Klick ein, und der Marker wechselt von − zu +. [foldarea-closed:Titel] erzeugt denselben Block, von Anfang an eingeklappt. Blöcke lassen sich verschachteln, und das Einklappen löst kein Event aus: Es ist eine Sache des Lesens, nicht des Codes. Ist ib_auto_height aktiv, wird die Höhe bei jedem Ein- und Ausklappen erneut gemeldet. Der Titel ist Auszeichnungstext: [foldarea:[b][accent]Auftrag 2026-0148[/accent][/b]] setzt seinen eigenen fett und in Akzentfarbe.
Ein laufendes Band #
// Die Meldung des Bandes
uo_banner.is_text = "[b]Hinweis[/b] -- der Dienst bleibt am Freitag, dem 12., geschlossen."
// Laufschriftmodus, wie ein Nachrichtenticker
uo_banner.ib_marquee = true
uo_banner.ii_marquee_speed = 90 // Pixel pro Sekunde
uo_banner.is_marquee_direction = uo_banner.MARQUEE_START
Der Lauf wiederholt sich ohne Leerlauf. Zum Anhalten setzen Sie ib_marquee wieder auf false: Der Text nimmt sein normales Layout wieder an.
Sobald ib_track_cycle = true gesetzt ist, wird bei jedem vollständigen Durchlauf des Textes das Event ue_cycle ausgelöst — praktisch, um mehrere Meldungen abwechselnd anzuzeigen:
// In ue_cycle des Bandes : zur naechsten Meldung wechseln
ii_message = Mod(ii_message, UpperBound(is_messages)) + 1
uo_banner.is_text = is_messages[ii_message]
Ein Ablagebereich für Dateien #
// Aus dem Windows-Explorer gezogene Dateien annehmen
uo_zone.ib_allow_drop = true
// Was die Zone anzeigt, zentriert
uo_zone.is_text = "[size=32][accent][b]Dateien hier ablegen[/b][/accent][/size][br][br]" &
+ "Ziehen Sie eine oder mehrere Dateien aus dem Windows-Explorer."
uo_zone.is_align = uo_zone.ALIGN_CENTER
uo_zone.is_valign = uo_zone.VALIGN_CENTER
// ue_drop_files-Event von uo_zone : (string as_files[])
integer li
// Jede abgelegte Datei, eine nach der anderen
for li = 1 to UpperBound(as_files)
of_import(as_files[li]) // as_files[li] = VOLLSTAENDIGER Pfad der Datei
next
// ue_drag_enter-Event von uo_zone : das Ziel waehrend des Ueberfahrens hervorheben
uo_zone.il_border_color = RGB(/*red*/ 21, /*green*/ 101, /*blue*/ 192)
uo_zone.ii_border_width = 2
Die empfangenen Pfade sind vollständig: Sie können sie direkt an FileOpen oder an Ihre eigene Importroutine übergeben.
Eine Beschriftung, die sich wie eine Schaltfläche verhält #
// Ein Text, der sich wie eine Link-Schaltflaeche verhaelt
uo_link.is_text = "Alles auswählen"
uo_link.il_text_color = RGB(/*red*/ 21, /*green*/ 101, /*blue*/ 192)
uo_link.ii_padding = 8
uo_link.ii_corner_radius = 6
uo_link.ib_hover_effect = true // reagiert auf den Mauszeiger wie eine Schaltflaeche
// ue_clicked-Event von uo_link
of_select_all()
Ein Protokoll, Zeile für Zeile geschrieben #
Jeder Aufruf sendet nur die hinzugefügte Zeile; ib_follow_end hält die letzte sichtbar, solange der Leser nicht nach oben scrollt.
// Once, when the window opens
uo_log.ib_follow_end = true
uo_log.is_text = "[b]Import[/b]"
// For every row imported : one line, sent alone
uo_log.of_append_text(/*markup*/ "Row " + String(ll_row) + " [color=#2e7d32]imported[/color]")
Ein Etikett so breit wie sein Text #
// A status chip : background, rounded corners, and the width of its text
uo_status.is_text = "[b]Status :[/b] connected"
uo_status.il_back_color = RGB(/*red*/ 232, /*green*/ 245, /*blue*/ 233)
uo_status.ii_corner_radius = 12
uo_status.ib_auto_width = true
Best Practices #
- Text ohne Auszeichnung kostet nichts zusätzlich: Ersetzen Sie Ihre PowerBuilder-
statictext-Steuerelemente ruhig durchgängig, auch für reinen Text. - Bevorzugen Sie
is_align = uo.ALIGN_STARTgegenüber"left": Ihre Maske bleibt korrekt, wenn die Anwendung auf Schreibrichtung von rechts nach links umschaltet. ib_selectablebleibt standardmäßig ausgeschaltet, wie bei einer Beschriftung. Aktivieren Sie es nur dort, wo Kopieren sinnvoll ist (Vorgangsnummer, technische Fehlermeldung).- Kombinieren Sie für eine Kopfzeile
il_back_color+ii_padding+ib_auto_height: Der Block bemisst sich selbst, wenn der Text seine Länge ändert. - Aktivieren Sie
ib_track_mousenur, wenn Sieue_mouse_enter/ue_mouse_leavewirklich skripten. - Rufen Sie
of_reset()auf, bevor Sie einen Block für einen anderen Inhalt wiederverwenden: Andernfalls bleiben ein vorheriger Hintergrund, Rahmen oder Laufschriftmodus bestehen.
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.
| Mitglieder | Rolle | Beschrieben in |
|---|---|---|
of_reset | Die Komponente zurücksetzen | 3.6 Eine Komponente zurücksetzen: of_reset() |
of_register_shortcut · of_clear_shortcuts | Tastenkürzel der Komponente | 3.5 Tastenkombinationen |
of_is_created · of_is_ready · of_get_last_error | Ob sie entstanden ist, ob sie bereit ist, was fehlschlug | 3.7 Diagnose |
of_save_as_png · of_save_as_jpg | Die Darstellung als Bild exportieren | 3.8 Die Darstellung als Bild exportieren |
of_set_redraw | Änderungen zu einem einzigen Neuzeichnen bündeln | 3.10 Best Practices |
of_preload_icons | Symbole ohne Verzögerung | Sofortige Anzeige: of_icon |
of_set_translation | Eine Beschriftung der Komponente übersetzen | 5.2 Eine Beschriftung anpassen: of_set_translation |
of_focus_webview | Der Komponente den Fokus geben | 6.4 Tastatur und Fokus |
of_print · of_print_to_pdf | Drucken oder ein PDF schreiben | 6.9 Drucken |
of_set_property · of_get_property · of_component_name | Eine Eigenschaft über ihren Namen steuern | 3.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.