PBToolboxAI v1 ← Site

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 #

Userobjectu_pbt_statictext
Item-Klasse— (Komponente ohne Items)
WofürEin PowerBuilder-statictext durch einen formatierten, klickbaren Textblock ersetzen, der als Kopfzeile, Laufschriftband oder Ablagebereich dienen kann
Opt-in-Optionenib_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 #

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

EigenschaftTypStandardZweck
is_textstring""Der angezeigte Text, mit der Rich-Text-Auszeichnung: [b], [i], [u], Farben, [picture=…], [hyperlink=…], [action=…]
is_alignstring"start"Horizontale Ausrichtung: ALIGN_START, ALIGN_CENTER, ALIGN_END, ALIGN_JUSTIFY
is_valignstring"top"Vertikale Ausrichtung innerhalb des Steuerelements: VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM
ib_wrapbooleantrueAutomatischer Zeilenumbruch. false erzwingt eine einzige Zeile
ib_ellipsisbooleanfalseKürzt bei ib_wrap = false den Überlauf mit Auslassungspunkten, statt ihn hart abzuschneiden
ib_ellipsis_tooltipbooleanfalseOpt-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_familystring""Standardschriftart des Blocks (leer = Schriftart des Designs)
ii_font_sizeinteger0Standardgröße in Punkt (0 = Größe des Designs)
il_text_colorlong-1Textfarbe als RGB() (-1 = Farbe des Designs). [color]-Tags haben für ihren Abschnitt weiterhin Vorrang
ii_line_spacinginteger0Zeilenabstand in Prozent (150 = 1,5 Zeilen; 0 = Standard)
ib_enabledbooleantrueBlock aktiv oder ausgegraut (Links und Aktionen sind inaktiv, wenn er ausgegraut ist)
ib_selectablebooleanfalseOpt-in: erlaubt dem Benutzer, den Text auszuwählen und zu kopieren (standardmäßig ausgeschaltet, wie bei einer Beschriftung)

Blockoptik (die „Kopfzeilen“-Optik) #

EigenschaftTypStandardZweck
il_back_colorlong-1Blockhintergrund als RGB() (-1 = Hintergrund des Designs)
il_border_colorlong-1Rahmenfarbe (-1 = kein Rahmen)
ii_border_widthinteger0Rahmenstärke in Pixeln (0 = kein Rahmen)
ii_corner_radiusinteger0Radius der Eckenrundung, in Pixeln
ii_paddinginteger0Innenabstand in Pixeln (0 = Wert des Designs)
ib_hover_effectbooleanfalseOpt-in: leichte Abdunklung beim Überfahren mit der Maus, für eine Beschriftung, die wie eine Schaltfläche wirkt

Laufschriftmodus (Marquee) #

EigenschaftTypStandardZweck
ib_marqueebooleanfalseVerwandelt den Block in ein horizontal laufendes Band
ii_marquee_speedinteger60Laufgeschwindigkeit, in Pixeln pro Sekunde
is_marquee_directionstringMARQUEE_STARTLaufrichtung: MARQUEE_START (zum Anfang der Leserichtung hin) oder MARQUEE_END. Die physischen Aliasnamen "left" / "right" werden akzeptiert
ib_marquee_overflow_onlybooleanfalseOpt-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_hoverbooleanfalseOpt-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 #

EigenschaftTypStandardZweck
ib_allow_dropbooleanfalseOpt-in: nimmt aus dem Windows-Explorer abgelegte Dateien an; die vollständigen Pfade kommen über ue_drop_files an
ib_track_mousebooleanfalseOpt-in: aktiviert ue_mouse_enter / ue_mouse_leave
ib_auto_heightbooleanfalseOpt-in: der Block misst seine ideale Höhe und passt die Größe des Userobjects an; siehe Gemeinsame Basis
is_theme_stylestringfluentVisueller Stil der Komponente (Konstanten THEME_STYLE_*)
is_theme_modestringlightHelle oder dunkle Variante (Konstanten THEME_MODE_*)
il_theme_accentlong-1Akzentfarbe dieser Komponente (-1 = Akzent des Designs)
is_tooltipstring""Einfacher Tooltip beim Überfahren der Komponente
is_super_tooltip_titlestring""Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip)
is_super_tooltip_textstring""Text des erweiterten Tooltips (Rich-Markup zulässig)
is_super_tooltip_imagestring""Bild des erweiterten Tooltips

Methoden #

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

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


← Komponentenreferenz · Inhalt des Handbuchs