PBToolboxAI v2 ← Site

toolbar — u_pbt_toolbar #

← Komponentenreferenz · Inhalt des Handbuchs

Flache Symbolleiste: mehrere Leisten auf Bändern verteilt, Schaltflächen, Umschalter, Dropdown-Menüs, Eingabefelder, automatischer Überlauf und Verschieben am Griff.

▶ Live ansehen — Demoanwendung, Kachel Toolbar: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.


Auf einen Blick #

Userobjectu_pbt_toolbar
Item-Klassenn_pbt_toolbar_bar (Leiste) → n_pbt_toolbar_item (Werkzeug)
WofürEine klassische Symbolleiste durch eine moderne, dem Design folgende Leiste mit mehreren umsortierbaren Zeilen ersetzen
HöheIntrinsisch: Die Leiste richtet sich immer nach ihren Zeilen, es ist nichts zu aktivieren — siehe Automatische Höhe

Schnellstart #

// open-Event des Fensters

// MAIN_BAR ist die Standardleiste, immer vorhanden : die Adresse beginnt bei ihr


uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/save", /*text*/ "", /*bild*/ "mono:img\save.svg", /*tooltip*/ "Speichern")
uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/find", /*text*/ "", /*bild*/ "mono:img\find.svg", /*tooltip*/ "Suchen")
uo_toolbar.of_add_separator(/*keys*/ uo_toolbar.MAIN_BAR)
uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/help", /*text*/ "Hilfe",  /*bild*/ "", /*tooltip*/ "Info")
// Event ue_clicked von uo_toolbar: (string as_keys)
choose case as_keys
    case "main/save" ; of_enregistrer()
    case "main/find" ; of_rechercher()
    case "main/help" ; of_aide()
end choose

Das Modell: Leisten, Bänder, Werkzeuge #

Eine Symbolleiste enthält eine oder mehrere Leisten. Jede Leiste liegt auf einem Band (einer Zeile) und belegt eine Position in dieser Zeile: Zwei Leisten auf demselben Band teilen sich die Zeile, zwei Leisten auf verschiedenen Bändern stapeln sich — genau wie die klassischen Office-Symbolleisten.

Die Werkzeuge (Schaltflächen, Umschalter, Menüs, Felder) gehören zu einer Leiste. Ihr Bezeichner ist nur innerhalb ihrer Leiste eindeutig: Der Zugriff läuft daher immer über den vollständigen Pfad.

uo_toolbar.of_bar("main").of_item("save").ib_enabled = false

Auch die Hinzufügungen leben auf dem Handle des übergeordneten Elements: Sie fügen ein Werkzeug einer Leiste hinzu, nicht der Symbolleiste. Siehe Gemeinsame Basis · Die Items für das allgemeine Prinzip.


Eigenschaften #

EigenschaftTypStandardZweck
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
ib_reorderablebooleanfalseErlaubt dem Benutzer, die Leisten mit der Maus neu anzuordnen: die Verschiebegriffe erscheinen und eine Leiste kann in ein anderes Band gezogen werden. Standardmäßig aus — eine versehentlich zerlegte Symbolleiste ist ein Supportfall. Ihr Code ordnet sie ohnehin um (of_set_layout, of_add_bar): der Schalter beschränkt den Benutzer, nie die Anwendung

Konstante #

KonstanteWertZweck
MAIN_BAR"main"Bezeichner der Standardleiste, immer verfügbar, ohne sie erst anlegen zu müssen

Methoden #

MethodeZweck
of_bar (string as_key) → n_pbt_toolbar_barLiefert das Handle einer Leiste (wird beim ersten Zugriff erzeugt)
of_add_button (string as_keys, string as_text, string as_image, string as_tooltip) → longAktionsschaltfläche an ihrer Adresse, "main/save": die Leiste, dann ihre eigene Id. Ein Klick löst ue_clicked aus. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_item (string as_keys) → n_pbt_toolbar_itemGibt das Handle eines Werkzeugs über seine Adresse zurück
of_add_bar (string as_key) → longFügt eine Leiste hinzu und liefert 0 (-5 bei einem ungültigen Argument, -2 wenn die Komponente nicht erzeugt ist)
of_add_bar (string as_key, integer ai_band, integer ai_index) → longFügt eine Leiste an einem bestimmten Band und an einer bestimmten Position hinzu (beide ab 0 gezählt). Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist
of_remove_bar (string as_key)Entfernt eine Leiste samt ihren Werkzeugen. Die anderen behalten ihren aktiven Zustand, und die Bänder rücken hinter der ausscheidenden zusammen. Das ist nicht dasselbe wie Ausblenden (ib_visible auf ihrem Handle): Ausblenden behält sie im Modell, bereit, genau dorthin zurückzukehren, wo sie war; Entfernen vergisst sie. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_get_layout ()Liest die aktuelle Anordnung als JSON zurück: welche Leiste auf welchem Band, an welcher Position, sichtbar oder nicht. Speichern und mit of_set_layout zurückgeben
of_set_layout (string as_layout_json)Stellt eine zuvor über ue_layout_changed empfangene Leistenanordnung wieder her. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_clear ( )Entfernt alle Leisten und alle Werkzeuge. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist
of_reset ( )Leert den Inhalt und setzt die Eigenschaften auf ihre Standardwerte zurück. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist
of_add_toggle (string as_keys, string as_text, string as_image, string as_tooltip) → longUmschalter mit zwei Zuständen; der Klick löst ue_toggled aus. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_dropdown (string as_keys, string as_text, string as_image, string as_tooltip) → longSchaltfläche mit Dropdown-Menü; eine Auswahl löst ue_menu_selected aus. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_label (string as_keys, string as_text) → longInformative Beschriftung, nicht anklickbar. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_textbox (string as_keys, string as_text, integer ai_width, string as_tooltip) → longEingabefeld; Eingabetaste oder Fokusverlust löst ue_text_changed aus. ai_width in Pixeln. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_datepicker (string as_keys, string as_date, string as_tooltip) → longDatumsauswahl; eine Auswahl löst ue_date_changed aus. Datumsangaben im Format "jjjj-mm-tt". Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_separator (string as_keys)Senkrechter Trennstrich. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_insert_button (string as_keys, string as_text, string as_image, string as_tooltip, integer ai_index) → longSchaltflaeche an der gewaehlten Position (erste = 0) statt am Ende. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_move_item (string as_keys, integer ai_index)Verschiebt ein Werkzeug an eine andere Position in dieser Leiste (erste = 0). Es behaelt seine Art, sein Menue und seinen aktuellen Zustand: das Werkzeug wechselt den Platz, es wird nicht neu gebaut. Gilt fuer jede Art, daher fuegen die of_add_* ohne of_insert_* ein, indem sie hinzufuegen und dann verschieben. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_remove_item (string as_keys)Entfernt ein Werkzeug aus dieser Leiste. Die Leiste bleibt, und alles andere darin ebenfalls, samt aktivem Zustand — nur das genannte Werkzeug geht. Um es kommen und gehen zu lassen, behält ib_visible auf seinem Handle es im Modell. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_menu_item (string as_keys, string as_label, string as_image)Eintrag im Menü einer Dropdown-Schaltfläche ; Kaskadierender Eintrag, unter einem vorhandenen Eintrag einsortiert. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist
of_add_menu_separator (string as_keys)Trennstrich innerhalb des Menüs. Liefert 0 nach der Anwendung, -5 bei einem ungültigen Argument (leerer Schlüssel, falsche Adresse), -2 wenn die Komponente nicht erzeugt ist

Auf einer Leiste — n_pbt_toolbar_bar #

MitgliedTypStandardZweck
ii_bandinteger0Band (Zeile), das die Leiste trägt; 0 = erste Zeile
ii_indexinteger0Position der Leiste innerhalb ihres Bands
ib_visiblebooleantrueZeigt oder verbirgt eine Leiste. Eine verborgene Leiste behält ihr Band, ihren Rang und ihre Elemente: Beim erneuten Anzeigen steht sie wieder genau dort, wo sie war, ohne dass etwas neu aufgebaut wird — das ist der Unterschied zu of_clear, das sie verlieren würde

Auf einem Werkzeug — n_pbt_toolbar_item #

MitgliedTypStandardZweck
ib_visiblebooleantrueZeigt oder verbirgt ein Element. Es behält seinen Rang in der Leiste: Beim erneuten Anzeigen steht es wieder genau dort, wo es war, nicht am Ende. Nicht zu verwechseln mit ib_enabled, das es ausgegraut an Ort und Stelle lässt — verbergen Sie, was nicht zutrifft, und grauen Sie aus, was vorübergehend nicht verfügbar ist
ib_enabledbooleantrueWerkzeug aktiv oder ausgegraut
ib_checkedbooleanfalseZustand eines Umschalters (ohne Wirkung auf die anderen Typen)
is_textstring""Beschriftung, Rich-Text-Auszeichnung zulässig
is_shortcutstring""Tastenkombination ("Ctrl+S"), im Tooltip angezeigt und aktiv

Die Bilder akzeptieren alle von der Bibliothek erkannten Formen: Pfad, mono:, tint:, DLL-Ressource.


Events #

EventAusgelöst wenn
ue_clicked (string as_keys)Auf eine Schaltfläche wird geklickt (oder sie wird über ihre Tastenkombination ausgelöst)
ue_toggled (string as_keys, boolean ab_checked)Ein Umschalter wechselt den Zustand; ab_checked trägt den neuen Zustand
ue_menu_selected (string as_keys)Ein Eintrag eines Dropdown-Menüs wird gewählt
ue_text_changed (string as_keys, string as_text)Ein Eingabefeld wird bestätigt (Eingabetaste oder Fokusverlust)
ue_date_changed (string as_keys, string as_date)Ein Datum wird gewählt ("jjjj-mm-tt")
ue_bar_reordered (string as_key, integer ai_band, integer ai_index)Der Benutzer hat eine Leiste am Griff in ein anderes Band oder auf einen anderen Rang gezogen (erfordert ib_reorderable). Nennt welche Leiste sich bewegt hat und wohin, während ue_layout_changed die gesamte Anordnung trägt. Band und Rang beginnen bei 1
ue_layout_changed (string as_layout_json)Die Anordnung hat sich geändert — der Benutzer hat eine Leiste am Griff gezogen, oder Ihr eigener Code hat eine verschoben oder verborgen. Trägt die gesamte Anordnung, nicht nur das Verschobene
ue_auto_height (long al_height)Die ideale Höhe hat sich geändert und die Leiste hat sich daran angepasst — immer aktiv: Die Anzahl der Zeilen bestimmt die Höhe
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 #

Vorab aktivierte Umschalter und ein ausgegrautes Werkzeug #



uo_toolbar.of_add_toggle(/*keys*/ uo_toolbar.MAIN_BAR + "/bold",   /*text*/ "", /*bild*/ "mono:img\bold.svg",   /*tooltip*/ "Fett")
uo_toolbar.of_add_toggle(/*keys*/ uo_toolbar.MAIN_BAR + "/italic", /*text*/ "", /*bild*/ "mono:img\italic.svg", /*tooltip*/ "Kursiv")
uo_toolbar.of_add_separator(/*keys*/ uo_toolbar.MAIN_BAR)
uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/undo",   /*text*/ "", /*bild*/ "mono:img\undo.svg",   /*tooltip*/ "Rueckgaengig")

// Jedes Werkzeug wird ueber sein Handle gesteuert, das man von SEINER Leiste erhaelt
uo_toolbar.of_item(/*keys*/ uo_toolbar.MAIN_BAR + "/bold").ib_checked = true    // Umschalter von vornherein aktiviert
uo_toolbar.of_item(/*keys*/ uo_toolbar.MAIN_BAR + "/undo").ib_enabled = false   // vorerst nichts rueckgaengig zu machen
// Event ue_toggled von uo_toolbar
if as_key = "bold" then of_appliquer_gras(ab_checked)

Kaskadierendes Dropdown-Menü #


// Das Menue wird vom Komponenten aus gefuellt : drei Ebenen, Leiste/Dropdown/Eintrag
uo_toolbar.of_add_dropdown(/*keys*/ uo_toolbar.MAIN_BAR + "/export", /*text*/ "Exportieren", &
                                   /*bild*/ "mono:img\save.svg", /*tooltip*/ "Die Akte exportieren")
uo_toolbar.of_add_menu_item(/*keys*/ uo_toolbar.MAIN_BAR + "/export/exp_pdf", /*label*/ "PDF",  /*bild*/ "")
uo_toolbar.of_add_menu_item(/*keys*/ uo_toolbar.MAIN_BAR + "/export/exp_csv", /*label*/ "CSV",  /*bild*/ "")
uo_toolbar.of_add_menu_separator(/*keys*/ uo_toolbar.MAIN_BAR + "/export")

// Untermenue: Der uebergeordnete Eintrag wird als erstes Argument genannt
uo_toolbar.of_add_menu_item(/*keys*/ uo_toolbar.MAIN_BAR + "/export/exp_img", /*label*/ "Bild...", /*bild*/ "")
uo_toolbar.of_add_menu_item(/*keys*/ uo_toolbar.MAIN_BAR + "/export/exp_img/exp_png", /*label*/ "PNG", /*bild*/ "")
uo_toolbar.of_add_menu_item(/*keys*/ uo_toolbar.MAIN_BAR + "/export/exp_img/exp_jpg", /*label*/ "JPEG", /*bild*/ "")
// Event ue_menu_selected von uo_toolbar: (as_keys)
n_pbt_utils lnv_utils   // autoinstantiate : nichts zu erzeugen, nichts zu zerstoeren
string ls_ids[]

if lnv_utils.of_split_path(as_keys, ls_ids) = 3 then
	if ls_ids[2] = "export" then of_exporter(ls_ids[3])
end if

Suchfeld und Datumsauswahl #



uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/save", /*text*/ "", /*bild*/ "mono:img\save.svg", /*tooltip*/ "Speichern")
uo_toolbar.of_item(/*keys*/ uo_toolbar.MAIN_BAR + "/save").is_shortcut = "Ctrl+S"    // Tastenkombination aktiv und angezeigt
uo_toolbar.of_add_separator(/*keys*/ uo_toolbar.MAIN_BAR)

// 160 px breit; die Eingabe wird bei der Bestaetigung gemeldet
uo_toolbar.of_add_textbox(/*keys*/ uo_toolbar.MAIN_BAR + "/search", /*text*/ "", /*breite*/ 160, /*tooltip*/ "Suchen (Eingabetaste zum Bestaetigen)")

uo_toolbar.of_add_label(/*keys*/ uo_toolbar.MAIN_BAR + "/lbl_due", /*text*/ "Fällig am:")
uo_toolbar.of_add_datepicker(/*keys*/ uo_toolbar.MAIN_BAR + "/due", /*datum*/ "2026-07-11", /*tooltip*/ "Faelligkeitsdatum")
// Event ue_text_changed von uo_toolbar
if as_key = "search" then of_filtrer(as_text)
// Event ue_date_changed von uo_toolbar: as_date im Format "jjjj-mm-tt"
if as_key = "due" then id_echeance = Date(as_date)

Zwei Leisten und eine gemerkte Anordnung #

Der Benutzer kann eine Leiste an ihrem Griff (links von der Leiste) fassen und auf ein anderes Band oder an eine andere Position verschieben. Bewahren Sie die Anordnung beim Schließen auf und stellen Sie sie beim Öffnen wieder her.



uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/new",  /*text*/ "Neu", /*bild*/ "", /*tooltip*/ "")
uo_toolbar.of_add_button(/*keys*/ uo_toolbar.MAIN_BAR + "/open", /*text*/ "Öffnen",  /*bild*/ "", /*tooltip*/ "")

// Zweite Leiste, auf Band 1 (zweite Zeile) an erster Position abgelegt

uo_toolbar.of_add_toggle(/*keys*/ /*leiste*/ "format", /*band*/ 1, /*index*/ 0 + "/bold", /*text*/ "F", /*bild*/ "", /*tooltip*/ "Fett")

// Eine Leiste laesst sich auch jederzeit ueber ihre Eigenschaften umsetzen
uo_toolbar.of_bar("format").ii_band  = 0
uo_toolbar.of_bar("format").ii_index = 1    // zweite Leiste der ersten Zeile
// Event ue_layout_changed von uo_toolbar: die gewaehlte Anordnung aufbewahren
is_disposition = as_layout_json
// Beim naechsten Oeffnen: wiederherstellen, was der Benutzer eingerichtet hatte
if is_disposition <> "" then uo_toolbar.of_set_layout(is_disposition)

Überlauf: „Weitere Werkzeuge“ #

Wenn die Breite nicht mehr ausreicht, werden die Werkzeuge, die nicht mehr hineinpassen, in ein Menü Weitere Werkzeuge eingeklappt, das durch einen Winkel am Ende der Leiste gekennzeichnet ist. Das geschieht automatisch, es ist nichts zu programmieren: Die eingeklappten Werkzeuge bleiben anklickbar und lösen dieselben Events aus. Ein eingeklapptes Feld — Textfeld oder Datumsauswahl — bleibt ein echtes Feld: Sie tippen darin, Sie wählen darin ein Datum, und das Event wird ausgelöst, als wäre das Werkzeug in der Leiste geblieben.

Automatische Höhe #

Es ist nichts zu aktivieren: Die Anzahl der Zeilen (of_set_layout) bestimmt die Höhe, die Leiste passt sich von selbst an und benachrichtigt Sie.

// Event ue_auto_height von uo_toolbar
uo_contenu.y      = uo_toolbar.y + al_height
uo_contenu.height = parent.workspaceheight() - uo_contenu.y

Siehe Gemeinsame Basis.


Best Practices #

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.

MitgliederRolleBeschrieben in
of_count · of_keys_at · of_hasDurchlaufen, was die Komponente enthält3.2 Die Items
of_resetDie Komponente zurücksetzen3.6 Eine Komponente zurücksetzen: of_reset()
of_register_shortcut · of_clear_shortcutsTastenkürzel der Komponente3.5 Tastenkombinationen
of_is_created · of_is_ready · of_get_last_errorOb sie entstanden ist, ob sie bereit ist, was fehlschlug3.7 Diagnose
of_save_as_png · of_save_as_jpgDie Darstellung als Bild exportieren3.8 Die Darstellung als Bild exportieren
of_set_redrawÄnderungen zu einem einzigen Neuzeichnen bündeln3.10 Best Practices
of_preload_iconsSymbole ohne VerzögerungSofortige Anzeige: of_icon
of_set_translationEine Beschriftung der Komponente übersetzen5.2 Eine Beschriftung anpassen: of_set_translation
of_focus_webviewDer Komponente den Fokus geben6.4 Tastatur und Fokus
of_print · of_print_to_pdfDrucken oder ein PDF schreiben6.9 Drucken

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.


← Komponentenreferenz · Inhalt des Handbuchs