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, ib_ellipsis_tooltip, ib_marquee_overflow_only, ib_marquee_pause_on_hover, ib_mnemonic, ib_veto_links |
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 — ihre [action=…]-Bereiche lösen ue_action aus und sind auch per Tastatur erreichbar (die Meldungsbox macht sie ebenfalls klickbar; 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 am Rand. false bricht lange Zeilen nicht mehr um: sie laufen über, und nur die Zeilenwechsel des Textes ([br], ein Zeilenumbruch) beginnen eine neue 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, von 6 bis 200 wie das [size]-Tag (0 = Größe des Designs oder die von PBT_SetDefaultFont). Ein Wert außerhalb dieses Bereichs wird auf die nächste Grenze zurückgeführt und so zurückgelesen, wie er angewendet wurde |
il_text_color | long | -1 | Textfarbe als RGB() (-1 = Farbe des Designs). [color]-Tags haben für ihren Abschnitt weiterhin Vorrang. Eine SYSTEMfarbe von PowerBuilder (WindowText, ButtonFace…) bedeutet die Farbe des Designs und wird als -1 zurückgelesen |
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. Ausgegraut sind Links, Aktionen und Faltköpfe inaktiv und verlassen die Tab-Reihenfolge; auf der Fläche des Designs nimmt der Text das Grau des Designs an, auf einem eigenen Hintergrund (il_back_color, ein [bk]-Abschnitt) bleiben seine Farben erhalten und werden abgeschwächt: er bleibt lesbar |
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 |
ii_max_lines | integer | 0 | Höchstens N angezeigte Zeilen (0 = keine Grenze): die letzte endet mit „…“, der Text gilt für ue_text_overflow und ib_ellipsis_tooltip als abgeschnitten, und ib_auto_height misst die gezeigten Zeilen. Ohne Wirkung auf eine Laufschrift |
ib_mnemonic | boolean | false | Opt-in: Das & im Text markiert den Buchstaben einer Tastenkombination, wie bei einem PowerBuilder-StaticText — „&Name:“ zeigt das N unterstrichen, && schreibt ein &. Wie in PowerBuilder gehört die Tastenkombination selbst dem Steuerelement, das die Beschriftung benennt (sein Accelerator). Standardmäßig aus: „R&D“ bleibt wie geschrieben; is_text wird mit seinen & zurückgelesen |
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. Es bleibt PowerBuilder gemeldet, wenn das Design wechselt. Eine SYSTEMfarbe von PowerBuilder (ButtonFace…) bedeutet den Hintergrund des Designs und wird als -1 zurückgelesen |
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 |
il_max_log_lines | long | 0 | Für ein mit of_append_text geschriebenes Protokoll: die Anzahl behaltener Zeilen (0 = alle). Darüber hinaus gehen die ältesten, vom Bildschirm UND aus is_text; der mit is_text gesetzte Text zählt als eine Zeile. Ein Absenken kürzt sofort |
ii_max_width | integer | 0 | Mit ib_auto_width: die größte Breite des Userobjects, in Pixeln (0 = keine Grenze). Ein längerer Text bricht bei dieser Breite um, und ib_auto_height übernimmt die Höhe |
ib_veto_links | boolean | false | Opt-in: Bevor sich ein [hyperlink] öffnet, wird ue_hyperlink_opening gefragt; FALSE hält den Link geschlossen, und Sie behandeln ihn selbst (Ihr eigener Browser, eine Bestätigung). Standardmäßig aus, wie jedes abbrechbare Ereignis der Bibliothek: der Link öffnet sich sofort |
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; eine Zeile beginnt ohne offenes Tag, und eine leere Zeile behält die Höhe einer Zeile. Zurückgelesen enthält is_text alle Zeilen, verbunden durch [br], jede schließt die Tags, die sie offen ließ. Mit ib_follow_end bleibt die Ansicht unten, mit il_max_log_lines gehen die ältesten Zeilen; ein Bildschirmleser kündigt jede neue Zeile an. Liefert 0 nach dem Senden, -2 wenn die Komponente nicht erzeugt ist |
of_clear ( ) | Leert den Text, alle Zeilen eines Protokolls eingeschlossen, und behält alle anderen Einstellungen (of_reset setzt sie alle auf ihre Standardwerte zurück). 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, boolean ab_opened) | 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. ab_opened sagt, ob er sich wirklich geöffnet hat: FALSE für ein anderes Schema als http, https oder mailto (of_get_last_error() sagt warum) oder wenn ue_hyperlink_opening ihn geschlossen hielt |
ue_hyperlink_opening (string as_url) → boolean | Abbrechbar, wird gefragt, bevor sich eine [hyperlink=url]-Zone öffnet, nur wenn ib_veto_links = true. FALSE hält den Link geschlossen, und Sie behandeln ihn selbst: ue_hyperlink kommt dann mit ab_opened = FALSE. Standard: TRUE |
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[])
// Local variables
integer li
// Das Ablegen ist vorbei : die Zone sieht wieder normal aus
uo_zone.ii_border_width = 0
// 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
// ue_drag_leave-Event von uo_zone : das Ziehen ist weg, die Zone sieht wieder normal aus
uo_zone.ii_border_width = 0
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, und il_max_log_lines behält nur die neuesten.
// Local variables
long ll_row
// Once, when the window opens : the view follows the end, the 500 newest lines are kept
uo_log.ib_follow_end = true
uo_log.il_max_log_lines = 500
uo_log.is_text = "[b]Import[/b]"
// For every row imported : one line, sent alone
for ll_row = 1 to 2000
uo_log.of_append_text(/*markup*/ "Row " + String(ll_row) + " [color=#2e7d32]imported[/color]")
next
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
Eine Feldbeschriftung wie in PowerBuilder #
Eine aus einem PowerBuilder-StaticText übernommene Beschriftung behält ihr &: mit ib_mnemonic wird der Buchstabe unterstrichen und && schreibt ein &. Wie in PowerBuilder ist die Tastenkombination selbst der Accelerator des Feldes, das die Beschriftung benennt.
// The & marks the shortcut letter : "Customer name:" with the C underlined
uo_label.ib_mnemonic = true
uo_label.is_text = "&Customer name:"
Entscheiden, ob sich ein Link öffnet #
Mit ib_veto_links wird ue_hyperlink_opening gefragt, bevor sich ein [hyperlink] öffnet: FALSE hält ihn geschlossen — öffnen Sie ihn auf Ihre Weise oder fragen Sie nach einer Bestätigung — und ue_hyperlink kommt dann mit ab_opened = FALSE.
// Ask before a link opens
uo_text.ib_veto_links = true
uo_text.is_text = "See the [hyperlink=https://pbtoolboxai.net/doc/]documentation[/hyperlink]."
// ue_hyperlink_opening event of uo_text : (string as_url) returns boolean
// Only the pages of the company site open, every other link stays shut
return Left(as_url, 24) = "https://pbtoolboxai.net/"
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. - Ein aus PowerBuilder übernommener Bildschirm, dessen Beschriftungen ein
&tragen („&Name:“): schalten Sieib_mnemonicein, der Buchstabe wird wie im Original unterstrichen. - Eine SYSTEMfarbe von PowerBuilder (
ButtonFace,WindowText…) inil_back_coloroderil_text_colorbedeutet die Farbe des Designs und wird als-1zurückgelesen: eine Komponente mit Design übernimmt nicht das Grau von Windows.
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 |
is_accessible_name · is_accessible_description | Name und Beschreibung, die ein Bildschirmleser sagt | 3.4 Optionale Eigenschaften und Events |
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.