tab — u_pbt_tab #
← Komponentenreferenz · Inhalt des Handbuchs
Moderne Registerkarten, die echte PowerBuilder-Steuerelemente hosten: verschiebbare Registerleiste, Symbole je Registerkarte, schließbare Registerkarten, Umsortieren mit der Maus.
▶ Live ansehen — Demoanwendung, Kachel Tab: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.
Auf einen Blick #
| Userobject | u_pbt_tab |
| Item-Klasse | n_pbt_tab_page (eine Seite = eine Registerkarte) |
| Wofür | Eine PowerBuilder-tab durch eine gestaltete Leiste ersetzen und dabei Ihre vorhandenen Masken als Seiten beibehalten |
| Opt-in-Optionen | ib_reorderable |
Der entscheidende Punkt: Eine Seite ist kein HTML-Entwurf, sondern ein PowerBuilder-dragobject — ein Userobject, eine DataWindow, eine Gruppe von Steuerelementen oder sogar eine weitere PBToolboxAI-Komponente. Die Komponente übernimmt das Positionieren, das Anpassen der Größe sowie das Ein- und Ausblenden beim Wechsel der Registerkarte. Siehe Echte PowerBuilder-Steuerelemente hosten.
Schnellstart #
// open-Event des Fensters : jede Seite ist ein PB-Steuerelement, das bereits auf dem Fenster liegt
uo_tabs.of_add_page(/*key*/ "customers", /*title*/ "Kunden", /*page*/ uo_page_customers)
uo_tabs.of_add_page(/*key*/ "invoices", /*title*/ "Rechnungen", /*page*/ uo_page_invoices, /*closable*/ true)
// Ein Symbol je Registerkarte, am Handle der Seite gesetzt
uo_tabs.of_page(/*key*/ "customers").is_icon = "mono:img\customers.svg"
uo_tabs.of_page(/*key*/ "invoices").is_icon = "mono:img\invoice.svg"
// Die erste Registerkarte anzeigen
uo_tabs.of_select_page(/*key*/ "customers")
// Event ue_selection_changed von uo_tabs : (string as_from_key, string as_key)
of_load_page(as_key)
Eigenschaften #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
is_position | string | "top" | Platzierung der Leiste: top, bottom (waagerechte Leiste), start, end (senkrechte Leiste). Konstanten POSITION_TOP, POSITION_BOTTOM, POSITION_START, POSITION_END. START/END sind logisch und folgen der Schreibrichtung |
is_overflow_mode | string | "menu" | Was eine für ihre Registerkarten zu kleine Leiste tut. menu (Standard) hält jede Registerkarte lesbar: Was nicht mehr hineinpasst, verlässt die Leiste, und die Schaltfläche ··· listet alle auf, wobei die aktive stets sichtbar bleibt. compact behält alle in der Leiste und lässt sie schrumpfen, bis auf den Platz, den ein abgeschnittener Text braucht. Konstanten OVERFLOW_MENU, OVERFLOW_COMPACT |
ib_reorderable | boolean | false | Opt-in: Der Benutzer kann die Registerkarten umsortieren, indem er ihre Kopfzeile mit der Maus zieht (löst ue_tab_reordered aus) |
ib_veto_selection | boolean | false | Nachfragen, bevor die aktive Registerkarte wechselt — eine Geste des Benutzers (Klick, Tastatur, Tastenkürzel, Registerkartenliste) und of_select_page: löst ue_selection_changing aus, das ablehnen kann; ein abgelehntes of_select_page liefert -4. Standardmäßig deaktiviert, wie jedes abbrechbare Ereignis: auf true setzen, um ablehnen zu können (nicht gespeicherte Arbeit). Jede Frage einer Geste kostet einen Hin- und Rückweg zu PowerBuilder (~35 ms) |
ib_veto_close | boolean | false | Nachfragen, bevor der Benutzer eine Registerkarte schließt (Kreuz, Mittelklick, Kontextmenü, Entf): löst ue_tab_closing aus, das ablehnen kann. Standardmäßig deaktiviert: auf true setzen, um eine Seite mit nicht gespeicherter Arbeit zu behalten |
ib_context_menu | boolean | true | Integriertes Kontextmenü auf einer Registerkarten-Kopfzeile: Schließen, Andere schließen, Rechts davon schließen, Alle schließen, ausgegraut, wenn sie kein Ziel haben. Standardmäßig aktiv. Der Rechtsklick wählt zuerst die Registerkarte aus: Lehnt die Anwendung den Wechsel ab, öffnet sich kein Menü. Mit ib_veto_close läuft jedes Schließen über ue_tab_closing, eine Frage pro Seite: die Seite mit ungespeicherter Arbeit lehnt allein ab und bleibt offen, während ihre Nachbarn gehen. Auf false wählt ein Rechtsklick die Registerkarte aus und löst ue_tab_rclicked aus: Öffnen Sie dort Ihr eigenes Menü |
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 |
Eigenschaften einer Seite — n_pbt_tab_page #
Über of_page(id) bezogen, lassen sie sich im laufenden Betrieb ändern, ohne die Leiste neu aufzubauen.
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
is_title | string | "" | Beschriftung der Registerkarte. Akzeptiert die Rich-Text-Auszeichnung |
is_icon | string | "" | Symbol der Registerkarte (zulässige Formen: Pfad, mono:, tint:, DLL-Ressource). Leer = kein Symbol |
ib_enabled | boolean | true | false graut die Registerkarte aus: Kein Klick, keine Taste, kein Tastenkürzel und kein of_select_page aktiviert sie, und sie hat kein Schließkreuz. Wird die aktive Registerkarte deaktiviert, bleibt sie aktiv und ihre Seite bedienbar: Deaktivieren Sie bei Bedarf die Seite selbst (Ihr Code weiß, ob sie bearbeitbar bleiben soll) |
ib_visible | boolean | true | false blendet die Registerkarte aus, ohne die Seite zu entfernen; wird die aktive Registerkarte ausgeblendet, wird ihre Nachbarin aktiviert (die rechte, sonst die linke); wird die letzte sichtbare ausgeblendet, wird die Seite verborgen und ue_selection_changed mit leerem Schlüssel ausgelöst |
ib_closable | boolean | false | Schließkreuz auf dieser Registerkarte. Beim Hinzufügen selten bekannt: Es wird true, sobald das enthaltene Dokument gespeichert ist, und false, solange darin ein Vorgang läuft. Ein Mittelklick auf eine schließbare Registerkarte schließt sie ebenfalls, wie ihr Kreuz |
is_shortcut | string | "" | Tastenkombination, die diese Registerkarte aktiviert: "Ctrl+2", "Alt+F", "F6"… Sie antwortet, wo immer der Benutzer im Fenster ist, die eingebettete Seite eingeschlossen — die Kombination hält die DLL, nicht die Registerleiste. So auszuwählen ist ein Klick: ue_selection_changing wird gefragt, wenn ib_veto_selection aktiv ist, ue_selection_changed folgt; eine deaktivierte oder ausgeblendete Registerkarte ignoriert sie. "" entfernt sie |
is_tooltip | string | "" | Einfacher Tooltip beim Überfahren des Items |
is_super_tooltip_title | string | "" | Titel des erweiterten Item-Tooltips (hat Vorrang vor is_tooltip) |
is_super_tooltip_text | string | "" | Text des erweiterten Item-Tooltips (Rich-Markup zulässig) |
is_super_tooltip_image | string | "" | Bild des erweiterten Item-Tooltips |
Methoden #
| Methode | Zweck | |
|---|---|---|
of_add_page (string as_key, string as_title, dragobject ado_page) | Fügt eine nicht schließbare Registerkarte ohne Symbol hinzu und hostet das Steuerelement. Liefert 0 nach der Anwendung, -5 wenn der Schlüssel leer ist, ein / oder ` | enthält, bereits vergeben ist oder die Seite fehlt oder bereits gehostet ist (von dieser Registerkarte unter einem anderen Schlüssel oder von einer anderen Komponente): dann wird nichts hinzugefügt, -2` wenn die Komponente nicht erzeugt ist |
of_add_page (string as_key, string as_title, dragobject ado_page, boolean ab_closable) | Dasselbe, mit Schließkreuz, wenn ab_closable. Liefert 0 nach der Anwendung, -5 wenn der Schlüssel leer ist, ein / oder ` | enthält, bereits vergeben ist oder die Seite fehlt oder bereits gehostet ist (von dieser Registerkarte unter einem anderen Schlüssel oder von einer anderen Komponente): dann wird nichts hinzugefügt, -2` wenn die Komponente nicht erzeugt ist |
of_add_page (string as_key, string as_title, dragobject ado_page, boolean ab_closable, string as_icon) | Dasselbe, mit dem Symbol im selben Aufruf gesetzt (die Registerkarte erscheint von Anfang an vollständig). Liefert 0 nach der Anwendung, -5 wenn der Schlüssel leer ist, ein / oder ` | enthält, bereits vergeben ist oder die Seite fehlt oder bereits gehostet ist (von dieser Registerkarte unter einem anderen Schlüssel oder von einer anderen Komponente): dann wird nichts hinzugefügt, -2` wenn die Komponente nicht erzeugt ist |
of_insert_page (string as_key, string as_title, dragobject ado_page, integer ai_index) | Fügt die Seite hinzu und verschiebt sie anschließend an die Position ai_index (1 = die erste). Liefert 0 nach der Anwendung, -5 bei denselben Ablehnungen wie of_add_page, -2 wenn die Komponente nicht erzeugt ist | |
of_insert_page (string as_key, string as_title, dragobject ado_page, boolean ab_closable, string as_icon, integer ai_index) | Ebenso, mit dem, was of_add_page sagt: ob der Tab schließbar ist, und sein Symbol. Liefert 0 nach der Anwendung, -5 bei denselben Ablehnungen wie of_add_page, -2 wenn die Komponente nicht erzeugt ist | |
of_move_page (string as_key, integer ai_index) | Verschiebt eine vorhandene Registerkarte an die Position ai_index (1 = die erste); ihre gehostete Seite und die Auswahl bleiben erhalten. Liefert 0 nach der Anwendung, -5 wenn der Schlüssel keine Seite bezeichnet, -2 wenn die Komponente nicht erzeugt ist | |
of_select_page (string as_key) | Aktiviert eine Registerkarte wie ein Klick darauf: bei aktivem ib_veto_selection wird zuerst ue_selection_changing gefragt; dann folgt ue_selection_changed wie bei einem Klick (direkt nach Ihrem Skript, aus der Ereigniswarteschlange), und of_selected_key() liefert direkt danach bereits den neuen Schlüssel. Ist die Registerkarte schon aktiv, wird nichts gefragt und nichts ausgelöst. Liefert 0 nach der Anwendung (oder wenn schon aktiv), -4 wenn Ihr ue_selection_changing abgelehnt hat (nichts bewegt sich), -5 wenn der Schlüssel keine Seite bezeichnet oder die Seite nicht angezeigt werden kann (ausgeblendet, deaktiviert, jenseits der Demo-Grenze) — auch wenn danach gar keine Seite aktiv ist, -2 wenn die Komponente nicht erzeugt ist | |
of_remove_page (string as_key) | Entfernt die Registerkarte und gibt das Steuerelement an sein ursprüngliches Fenster zurück, ausgeblendet. Das Steuerelement bleibt nutzbar und kann anderswo gehostet werden. Löst ue_tab_closed nicht aus: Ihr Code hat es getan. War es die aktive Seite, wird ihre Nachbarin aktiv. Liefert 0 nach der Anwendung, -5 wenn der Schlüssel keine Seite bezeichnet, -2 wenn die Komponente nicht erzeugt ist | |
of_selected_key ( ) | Bezeichner der aktiven Registerkarte, "", wenn keine aktiv ist | |
of_get_layout ( ) | Liest die aktuelle Anordnung als JSON zurück: die Reihenfolge der Registerkarten und deren Sichtbarkeit. Speichern (Datei, Datenbank, Registry) und beim nächsten Start mit of_set_layout zurückgeben. Dasselbe Paar trägt auf jeder umsortierbaren Komponente dieselben Namen | |
of_set_layout (string as_layout_json) | Stellt eine mit of_get_layout gelesene oder über ue_layout_changed empfangene Anordnung wieder her. Was die Anordnung nicht nennt, behält seinen Platz am Ende: Eine gestern gespeicherte Anordnung darf seither Hinzugefügtes nicht verschwinden lassen. Das Anwenden löst kein Anordnungs-Event aus — Sie haben sie geliefert; blendet sie die aktive Registerkarte aus, wird ihre Nachbarin aktiv und ue_selection_changed meldet es. Liefert 0 nach der Anwendung, -5 wenn der Text leer oder kein gültiges JSON ist, -2 wenn die Komponente nicht erzeugt ist | |
of_page (string as_key) | n_pbt_tab_page-Handle der Seite (beim ersten Zugriff erzeugt) | |
of_refresh_page (string as_key) | Frischt die Darstellung einer außerhalb des Bildschirms aufgebauten Seite auf, ohne Flackern. Liefert 0, -5 wenn der Schlüssel keine Seite bezeichnet, -2 wenn die Komponente nicht erzeugt ist | |
of_relayout ( ) | Veröffentlicht den Seitenbereich erneut, damit das gehostete Steuerelement neu positioniert wird (nützlich nach einer verzögerten Anzeige). Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist | |
of_preload_icons (string as_icons[]) | Wärmt beim Start einen Satz Symbole vor: Eine später geöffnete Registerkarte zeigt ihr Symbol sofort. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist | |
of_reset ( ) | Leert die Leiste: Jede gehostete Seite wird an ihr ursprüngliches Fenster zurückgegeben, danach kehrt die Komponente in ihren Neuzustand zurück. 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_add_pagegibt einen negativen Code zurück, wenn der Bezeichner leer ist, bereits verwendet wird oder wenn das übergebene Steuerelement ungültig oder bereits gehostet ist.
Wenn zu viele Registerkarten offen sind — sie schrumpfen, um in das Band zu passen, aber nie unter eine lesbare Breite: Symbol und Schließkreuz beanspruchen ihren Platz zusätzlich zum Titel, nie auf dessen Kosten. Was nicht mehr hineinpasst, wird aus dem Band genommen, und an dessen Ende erscheint eine Schaltfläche ···: Sie öffnet die Liste aller sichtbaren Registerkarten, die aktive angehakt, und die Auswahl wechselt dorthin. Die aktive Registerkarte bleibt immer sichtbar. Das Band scrollt nicht — diese Schaltfläche ist der Weg zu den Registerkarten außerhalb des Rahmens. Nichts zu programmieren, das Verhalten ist automatisch.
Tastatur und Maus — Strg+Tab und Strg+Bild ab wechseln zur nächsten Registerkarte, Strg+Umschalt+Tab und Strg+Bild auf zur vorherigen: Es zählen nur Registerkarten, die aktiv werden können (ausgeblendete und ausgegraute werden übersprungen), und der Durchlauf beginnt am Ende wieder von vorn. Diese Tasten wirken, wenn die Tastatur im Registerkartenband oder in einer Seite ist, die es hostet — ein PowerBuilder-Steuerelement der Seite ebenso wie eine andere darin platzierte Komponente; aus einem Steuerelement außerhalb des Tabs bleiben sie beim Fenster. Es ist eine Geste des Benutzers: ue_selection_changing wird gestellt, wenn ib_veto_selection aktiv ist, danach folgt ue_selection_changed. Ein Mittelklick auf eine schließbare Registerkarte schließt sie, genau wie ihr Kreuz: dieselbe Frage ue_tab_closing, wenn ib_veto_close aktiv ist, danach ue_tab_closed; auf einer ausgegrauten oder nicht schließbaren Registerkarte bewirkt er nichts. Nichts zu programmieren.
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_selection_changed (string as_from_key, string as_key) | Die aktive Registerkarte hat gewechselt, durch eine Geste (ein Klick, die Tastatur einschließlich Strg+Tab, ein Tastenkürzel, die Registerkartenliste), durch of_select_page (ein Befehl Ihres Codes löst es ebenfalls aus, wie SelectTab SelectionChanged auslöst) oder weil eine Registerkarte geht (geschlossen, entfernt, ausgeblendet). Dieselben Argumente wie ue_selection_changing: Frage und Ergebnis lesen sich gleich, und as_from_key ist die verlassene Seite — auch wenn es sie nicht mehr gibt. Ein leeres as_key bedeutet, dass keine Registerkarte mehr angezeigt werden kann: alle Seiten sind verborgen |
ue_tab_closed (string as_key) | Der Benutzer hat eine Registerkarte geschlossen: ihr Kreuz, ein Mittelklick darauf, das Kontextmenü oder die Entf-Taste. Die Registerkarte ist bereits entfernt und die Seite an ihr Fenster zurückgegeben. of_remove_page löst es nie aus: Ihr Code hat es getan |
ue_tab_reordered (string as_key, integer ai_index) | Der Benutzer hat das Ziehen einer Kopfzeile beendet. ai_index ist die neue Position, beginnend bei 1, wie of_move_page |
ue_layout_changed (string as_layout_json) | Die zu speichernde Anordnung hat sich geändert: Der Benutzer hat eine Kopfzeile gezogen, oder Ihr Code hat eine Registerkarte verschoben (of_move_page, of_insert_page) oder aus- bzw. wieder eingeblendet (ib_visible). of_set_layout löst es nicht aus (Sie haben diese Anordnung geliefert), ebenso wenig das Hinzufügen, Schließen oder Entfernen einer Registerkarte — die Reihenfolge der anderen ändert sich nicht. Trägt die gesamte Anordnung, nicht nur das Verschobene: Das Speichern ist eine einzige Zuweisung |
ue_selection_changing (string as_from_key, string as_key) → boolean | Abbrechbar, wird vor dem Wechsel der aktiven Registerkarte gestellt — durch eine Geste des Benutzers oder durch of_select_page —, wenn ib_veto_selection auf true steht (standardmäßig deaktiviert). Geben Sie false zurück, um auf der Seite zu bleiben: nichts bewegt sich, und of_select_page liefert -4 |
ue_tab_closing (string as_key) → boolean | Abbrechbar, wird vor dem Schließen einer Registerkarte durch den Benutzer gestellt, wenn ib_veto_close auf true steht (standardmäßig deaktiviert). Benannt als Paar zu ue_tab_closed: closing / closed. Geben Sie false zurück, um die Registerkarte (und ihre gehostete Seite) offen zu halten |
ue_tab_rclicked (string as_key) | Rechtsklick auf eine Registerkarten-Kopfzeile, wenn ib_context_menu auf false steht: Die Registerkarte wird zuerst ausgewählt (über ue_selection_changing, wenn es aktiviert ist — eine abgelehnte Auswahl löst nichts aus), dann liefert dieses Event ihren Schlüssel. Öffnen Sie hier Ihr eigenes Menü: PopMenu(PointerX(), PointerY()) Ihres Fensters. Eine deaktivierte Registerkarte löst nichts aus; ein Event pro Rechtsklick |
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 #
Ein Ordner mit fachlichen Seiten #
// open-Event : die Seiten-Userobjects liegen bereits auf dem Fenster
uo_tabs.of_set_redraw(/*on*/ false)
// Eine Registerkarte je Seiten-Userobject
uo_tabs.of_add_page(/*key*/ "identity", /*title*/ "Identität", /*page*/ uo_identity)
uo_tabs.of_add_page(/*key*/ "addresses", /*title*/ "Adressen", /*page*/ uo_addresses)
uo_tabs.of_add_page(/*key*/ "accounting", /*title*/ "Buchhaltung", /*page*/ uo_accounting)
// Ein Symbol je Registerkarte, am Handle der Seite gesetzt
uo_tabs.of_page(/*key*/ "identity").is_icon = "mono:img\user.svg"
uo_tabs.of_page(/*key*/ "addresses").is_icon = "mono:img\map.svg"
uo_tabs.of_page(/*key*/ "accounting").is_icon = "mono:img\euro.svg"
// Ein einziges Rendern fuer alles, dann wird die erste Registerkarte angezeigt
uo_tabs.of_set_redraw(/*on*/ true)
uo_tabs.of_select_page(/*key*/ "identity")
Schließbare Dokumente, bei Bedarf geöffnet #
// Ein Dokument in einer neuen schliessbaren Registerkarte oeffnen
uo_tabs.of_add_page(/*key*/ ls_key, /*title*/ ls_label, /*page*/ uo_editor, /*closable*/ true, /*icon*/ "mono:img\doc.svg")
uo_tabs.of_select_page(/*key*/ ls_key)
// Event ue_tab_closed von uo_tabs : (string as_key)
// Die Registerkarte ist bereits entfernt ; es bleibt nur, Ihre Fachdaten freizugeben.
of_free_document(as_key)
Umsortieren mit der Maus #
// The user may drag a tab to a new place
uo_tabs.ib_reorderable = true
// Event ue_tab_reordered von uo_tabs : (string as_key, integer ai_index)
// ai_index = neue Position, beginnend bei 1 (wie of_move_page) : wir speichern die gewaehlte Reihenfolge.
of_save_order(as_key, ai_index)
Senkrechte Leiste #
// Registerleiste an der linken Seite, nuetzlich bei langen Beschriftungen
uo_tabs.is_position = uo_tabs.POSITION_START
Eine Registerkarte je nach Rechten grau ausblenden oder verbergen #
// Der Weg fuehrt immer ueber das Handle der Seite
uo_tabs.of_page(/*key*/ "accounting").ib_enabled = of_is_allowed("accounting")
uo_tabs.of_page(/*key*/ "audit").ib_visible = gb_expert_mode
Auf die Auswahl reagieren #
// Event ue_selection_changed von uo_tabs : (string as_from_key, string as_key)
choose case as_key
case "identity" ; uo_identity.of_refresh()
case "addresses" ; uo_addresses.of_refresh()
case "accounting" ; uo_accounting.of_refresh()
end choose
Einen Registerkartenwechsel oder ein Schließen ablehnen #
// Beide Fragen muessen EINGESCHALTET werden: ohne diese Zeilen fragt die
// Komponente nichts und wechselt oder schliesst sofort.
uo_tabs.ib_veto_selection = true
uo_tabs.ib_veto_close = true
// Event ue_selection_changing von uo_tabs : (string as_from_key, string as_key)
// FALSE zurueckzugeben haelt den Benutzer auf der Seite, die er verlaesst.
if of_page_modified(as_from_key) then
if MessageBox("Änderungen", "Ohne Speichern verlassen?", Question!, YesNo!) = 2 then
return false
end if
end if
return true
// Event ue_tab_closing von uo_tabs : (string as_key)
// FALSE zurueckzugeben haelt die Registerkarte und ihre gehostete Seite offen.
return not of_page_modified(as_key)
Wieder mit einer leeren Leiste beginnen #
// of_reset gibt JEDE gehostete Seite an ihr urspruengliches Fenster zurueck, bevor geleert wird
uo_tabs.of_reset()
uo_tabs.of_add_page(/*key*/ "home", /*title*/ "Startseite", /*page*/ uo_home)
Best Practices #
- Die gehosteten Steuerelemente müssen vor dem Aufruf vorhanden sein: Legen Sie sie zur Entwurfszeit auf das Fenster, die Komponente kümmert sich um das Ausblenden und das Neupositionieren.
- Laden Sie die Seiten einmal im
open-Event und steuern Sie danach nur noch die Auswahl: Das ist schneller, als fortlaufend Seiten hinzuzufügen und zu entfernen. - Rufen Sie
of_preload_iconsbeim Start auf, wenn Ihre Registerkarten Symbole tragen: Andernfalls zeigt sich beim ersten Öffnen einer ausgeblendeten Registerkarte eine kurze Verzögerung, bevor das Symbol erscheint. - Beide Fragen werden standardmäßig gestellt: Ein leer gelassenes Ereignis erlaubt die Aktion immer, Sie müssen nichts tun. Schalten Sie sie mit
ib_veto_selection/ib_veto_closeauffalseab, wenn die Abwägung Ihnen nichts bringt, denn jede Frage kostet einen Hin- und Rückweg zu PowerBuilder. - Ein gehostetes Steuerelement ist ein natives Fenster: Es zeichnet sich über der Web-Ebene. Kein visueller Effekt der Komponente kann darüber hinweggehen.
- Vergessen Sie
of_reset()nicht, bevor Sie eine Leiste neu aufbauen: Ohne diesen Aufruf schlägt die Wiederverwendung eines Seitenbezeichners fehl und die vorherigen Steuerelemente bleiben sichtbar. - Für Bereiche, die sich in der Größe ändern und abdocken lassen, statt sich gegenseitig ausschließender Seiten, greifen Sie besser zu dockcontainer.
- Mit der Tastatur folgt die Registerleiste ihrer Achse: Links/Rechts (bei Schreibrichtung von rechts nach links vertauscht), Oben/Unten in den Positionen
start/end, Pos1/Ende, Eingabe oder Leertaste zum Aktivieren, Entf zum Schließen einer schließbaren Registerkarte. Deaktivierte und aus der Leiste verdrängte Registerkarten werden übersprungen.
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_count · of_keys_at · of_has | Durchlaufen, was die Komponente enthält | 3.2 Die Items |
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.