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_track_mouse, ib_allow_drop, ib_selectable, ib_hover_effect |
Schnellstart #
// open-Event des Fensters
uo_texte.is_text = "Willkommen bei [b][accent]PBToolboxAI[/accent][/b][br]" &
+ "Lesen Sie die [hyperlink=https://pbtoolboxai.net]Dokumentation[/hyperlink]."
uo_texte.is_align = uo_texte.ALIGN_CENTER
uo_texte.is_valign = uo_texte.VALIGN_CENTER
Der Text akzeptiert die Rich-Text-Auszeichnung: Diese Komponente holt am meisten daraus heraus, denn sie ist die einzige, die [hyperlink=…]- und [action=…]-Bereiche wirklich klickbar macht.
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 (150 = 1,5 Zeilen; 0 = Standard) |
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 zu kopieren (standardmäßig ausgeschaltet, wie bei einer Beschriftung) |
Blockoptik (die „Kopfzeilen“-Optik) #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
il_back_color | long | -1 | Blockhintergrund als RGB() (-1 = Hintergrund des Designs) |
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 |
ii_padding | integer | 0 | Innenabstand in Pixeln (0 = Wert des Designs) |
ib_hover_effect | boolean | false | Opt-in: leichte Abdunklung beim Überfahren mit der Maus, 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 |
is_marquee_direction | string | MARQUEE_START | Laufrichtung: MARQUEE_START (zum Anfang der Leserichtung hin) oder MARQUEE_END. Die physischen Aliasnamen "left" / "right" werden akzeptiert |
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 |
ib_track_mouse | boolean | false | Opt-in: aktiviert ue_mouse_enter / ue_mouse_leave |
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 |
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) |
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 |
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 |
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 |
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_clicked ( ) | Linksklick auf den Block — nicht ausgelöst auf einem [action]- oder [hyperlink]-Bereich (keine Dopplung) |
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_id) | Auf einen [action=id]-Bereich wurde geklickt: Sie hängen dort Ihren eigenen Code ein |
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_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 |
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.
uo_entete.of_set_redraw(false)
uo_entete.is_text = "[b]Verkaufs-Dashboard"
uo_entete.is_align = uo_entete.ALIGN_CENTER
// Vollflaechiger Hintergrund und gut lesbarer weisser Text
uo_entete.il_back_color = RGB(/*rot*/ 60, /*gruen*/ 110, /*blau*/ 190)
uo_entete.il_text_color = RGB(/*rot*/ 255, /*gruen*/ 255, /*blau*/ 255)
uo_entete.ii_padding = 14
// Der Block schmiegt sich an seinen Inhalt : er liest sich wie eine Titelleiste
uo_entete.ib_auto_height = true
uo_entete.of_set_redraw(true)
// ue_auto_height-Event von uo_entete
of_repositionner_sous_entete(al_height) // verschiebt den Inhalt unter die Kopfzeile
Rich-Text mit Link und Aktion #
uo_texte.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_texte : (string as_id)
choose case as_id
case "renew" ; of_ouvrir_renouvellement()
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 #
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]"
uo_recap.ib_auto_height = true // der Block schrumpft, wenn ein Abschnitt eingeklappt wird
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 #
uo_bandeau.is_text = "[b]Hinweis[/b] -- der Dienst bleibt am Freitag, dem 12., geschlossen."
// Laufschriftmodus, wie ein Nachrichtenticker
uo_bandeau.ib_marquee = true
uo_bandeau.ii_marquee_speed = 90 // Pixel pro Sekunde
uo_bandeau.is_marquee_direction = uo_bandeau.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.
Bei jedem vollständigen Durchlauf des Textes wird 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_bandeau.is_text = is_messages[ii_message]
Ein Ablagebereich für Dateien #
// Aus dem Windows-Explorer gezogene Dateien annehmen
uo_zone.ib_allow_drop = true
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
for li = 1 to UpperBound(as_files)
of_importer(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(/*rot*/ 21, /*gruen*/ 101, /*blau*/ 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 #
uo_lien.is_text = "Alles auswählen"
uo_lien.il_text_color = RGB(/*rot*/ 21, /*gruen*/ 101, /*blau*/ 192)
uo_lien.ii_padding = 8
uo_lien.ii_corner_radius = 6
uo_lien.ib_hover_effect = true // reagiert auf den Mauszeiger wie eine Schaltflaeche
// ue_clicked-Event von uo_lien
of_tout_selectionner()
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.