PBToolboxAI v5 ← Site

carousel — u_pbt_carousel #

← Komponentenreferenz · Inhalt des Handbuchs

carousel blättert durch Elemente, von denen nur eines vorn steht: das Cover Flow von iTunes — das aktuelle Element von vorn, seine Nachbarn perspektivisch gedreht und einander überdeckend, eine Spiegelung darunter —, ein flacher Streifen, in dem mehrere Elemente ganz zu sehen sind, ein Kartenstapel oder ein flächenfüllendes Banner, das ein Element nach dem anderen zeigt. Jedes Element ist ein Bild, ein Rich Text oder eine Karte (Bild, Titel, Untertitel, über eine Vorlage geschriebener Inhalt, Tags, Badge). Der Benutzer klickt einen Nachbarn an, wischt mit Trägheit, dreht das Mausrad, tippt die ersten Buchstaben eines Titels oder nutzt die Tastatur; ue_current_changed sagt Ihnen, welches Element vorn steht. Das Karussell wird von Hand oder aus einem DataStore gefüllt und kann von selbst weiterlaufen, mit einer PAUSE-Schaltfläche.

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


Auf einen Blick #

Userobjectu_pbt_carousel
Elementklassen_pbt_carousel_item (of_item(key))
Dient zuDurch Albumcover, Produkte, Fotos, Datensätze, Neuigkeiten oder Einführungsschritte blättern
PrinzipEin Element hat einen eindeutigen Schlüssel; nur eines steht jeweils vorn, und es wird als Bild, Text oder Karte gezeichnet
Opt-in-Optionenib_veto_changes, ib_loop, ib_reflection, il_autoplay_ms
Grenze im DemomodusDie ersten 6 sichtbaren Elemente werden gezeichnet — siehe Der Demomodus

Schnellstart #

// Three album covers : a key, a title, a picture
uo_covers.of_add_item(/*key*/ "c1", /*title*/ "Northern Lights", /*image*/ "img\packimages.dll:SVG/COVERS/COVER-01")
uo_covers.of_add_item(/*key*/ "c2", /*title*/ "Blue Hour", /*image*/ "img\packimages.dll:SVG/COVERS/COVER-02")
uo_covers.of_add_item(/*key*/ "c3", /*title*/ "Evergreen", /*image*/ "img\packimages.dll:SVG/COVERS/COVER-03")

// A reflection under the covers, as on a glossy floor
uo_covers.ib_reflection = true
// event ue_current_changed of uo_covers : (string as_from_key, string as_key)
// The album now in front, in the title of the window ("" : the carousel is empty)
if as_key <> "" then Parent.Title = this.of_item(/*key*/ as_key).is_title

Vier Anordnungen, drei Ansichten #

is_style wählt die Anordnung: STYLE_COVERFLOW (Standard) zeigt das aktuelle Element von vorn und dreht seine Nachbarn perspektivisch, einander überdeckend, über die verfügbare Breite verteilt und mit der Entfernung dunkler (ii_angle, ii_spacing, ib_shade); STYLE_CAROUSEL reiht einen flachen Streifen auf, in dem mehrere Elemente ganz zu sehen sind; STYLE_STACK stapelt Karten — die aktuelle vorn, die folgenden dahinter, die vorigen zur Seite geschoben; STYLE_HERO zeigt ein einziges Element auf der ganzen Fläche, das nächste gleitet oder blendet ein (is_transition): das Banner eines Dashboards. Eine Kachel behält ein Seitenverhältnis (is_item_ratio; leer: 1:1 für Bilder, 3:4 für Karten, 16:9 für Texte), und der Inhalt einer Karte oder eines Textes folgt ihrer Größe, zwischen einer lesbaren Untergrenze und einer Obergrenze. ib_reflection legt eine Spiegelung unter die Elemente, ii_item_width und ii_item_height legen die Größe pixelgenau fest.

Warum Ansichten statt Komponenten im Karussell? Jede Komponente der Bibliothek ist ein eigenständiges Steuerelement mit eigener Webseite (einem WebView2): Sie kann nicht in der Seite einer anderen sitzen. Das Karussell zeichnet also selbst, was ein Bild, ein statictext oder eine Kanban-Karte zeigen würde — das sind die drei Ansichten eines Elements, und tausend Elemente kosten ein einziges Steuerelement. is_item_style wählt die Ansicht aller Elemente, is_style eines Elements wählt seine eigene (leer: es folgt dem Karussell). Mit ITEM_AUTO (Standard) ergibt sich die Ansicht aus dem, was das Element trägt:

of_item(key).of_face() nennt die gewählte Ansicht. Ein Bild ist eine Datei des Arbeitsplatzes, eine Ressource datei.dll:name, ein im Design gezeichnetes Symbol mono: oder tint: oder eine https://-Adresse; eine http://-Adresse wird abgelehnt und löst ue_image_failed mit REASON_INSECURE aus, eine fehlende Datei mit REASON_NOT_FOUND.

// The covers as a pile of cards, the whole picture in each tile
uo_covers.is_style = u_pbt_carousel.STYLE_STACK
uo_covers.is_fit = u_pbt_carousel.FIT_CONTAIN

// This item is a card, whatever it holds
uo_covers.of_item(/*key*/ "c2").is_style = u_pbt_carousel.ITEM_CARD

Eine am Anfang ausgerichtete Reihe #

Auf einem flachen Streifen (STYLE_CAROUSEL) ergibt is_align = ALIGN_START die Reihe eines Videodienstes: Die Elemente beginnen am Anfangsrand (rechts bei Leserichtung von rechts nach links), alle ganz und flach, und der letzte Bildschirm ist voll — kein leerer Platz nach dem letzten Element; ein von einem Rand angeschnittenes Element lädt zum Blättern ein. Das aktuelle Element steht nicht mehr in der Mitte: Es ist das vom Benutzer gewählte, immer ganz auf dem Bildschirm. Die Pfeile und Bild auf / Bild ab blättern um einen Bildschirm (die Elemente, die er ganz zeigt), und das aktuelle Element wird das erste, das der Bildschirm gebracht hat; die Pfeiltasten gehen um ein Element weiter und blättern nur so weit, dass es ganz bleibt; Mausrad und Wischen blättern und kommen auf einem ganzen Element zur Ruhe, das aktuelle Element folgt nur, wenn es hinausginge; ein Klick auf ein ganzes Element macht es zum aktuellen und löst ue_item_clicked aus. Die Pfeile liegen in den Rändern, erscheinen nur unter dem Zeiger oder mit der Tastatur und verschwinden an einem Ende. Die Punkte zählen Bildschirme (ein Punkt ist eine Stelle, an der der Streifen ruhen kann); der Zähler zählt weiterhin Elemente. Die automatische Wiedergabe blättert um einen Bildschirm, und am Ende kommt der erste Bildschirm von der Seite zurück. Mit ib_loop läuft die Reihe rund, wenn sie lang genug ist, um den Bildschirm zu umrunden (etwa drei Elemente mehr, als er zeigt). ALIGN_START wirkt auf die anderen Anordnungen nicht.

// The row of a video service : the covers from the start edge, a screen at a time
uo_covers.is_style = u_pbt_carousel.STYLE_CAROUSEL
uo_covers.is_align = u_pbt_carousel.ALIGN_START

// Small covers : the row holds several screens
uo_covers.ii_item_height = 150

Das vordere Element #

Das aktuelle Element ist das vordere; of_current_key() liest seinen Schlüssel live. Ein Klick auf einen Nachbarn holt ihn nach vorn; ein Klick auf das vordere Element löst ue_item_clicked aus, ein Doppelklick (oder Eingabe) ue_item_opened. Ein Wechsel des Benutzers — Klick, Tastatur, Mausrad, Wischen, Punkt, Pfeil, automatische Wiedergabe — und ein Wechsel Ihres Codes (of_select_item, of_next, of_previous) lösen dasselbe ue_current_changed aus, so wie SelectItem das Ereignis des Klicks auslöst. Mit ib_veto_changes wird ue_current_changing in beiden Fällen vorher gestellt: FALSE zurückzugeben lässt das Element vorn, und of_select_item gibt dann -4 zurück. ue_current_changed wird auch ausgelöst, wenn das vordere Element geht (ausgeblendet, entfernt: das nächste nimmt seinen Platz ein) und wenn das erste Element in einem leeren Karussell ankommt (as_from_key leer). Ein Befehl Ihres Codes in ue_current_changing (ein anderes Element ausgewählt) hat Vorrang: Die folgende Antwort ändert nichts mehr. of_select_row holt das Element einer Zeile nach vorn, und of_current_row liest die Zeile des vorderen Elements; mit ib_sync_row folgt das an of_from_datastore übergebene DataWindow dem vorderen Element — das Master-Detail eines DataWindow.

Ein ausgegrautes Element (ib_enabled = false) bleibt an seinem Platz, aber der Benutzer kann es weder nach vorn holen noch anklicken: Tastatur, Mausrad, Bild auf / Bild ab, die Bildlaufleiste und ein Schwung überspringen es; Ihr Code wählt es trotzdem aus. Ein ausgeblendetes Element (ib_visible = false) verlässt das Karussell und behält Schlüssel und Platz. Mit ib_loop (mindestens drei Elemente) folgt das erste auf das letzte. Ein Doppelklick auf einen Nachbarn holt ihn nach vorn und hört dort auf: weder ue_item_clicked noch ue_item_opened. il_autoplay_ms lässt das Karussell von selbst weiterlaufen, alle so viele Millisekunden (mindestens 500): Eine Schaltfläche PAUSE / WIEDERGABE erscheint darunter (ib_autoplay_button), und die Pause des Benutzers hält bis WIEDERGABE (of_pause, of_play, ue_autoplay_changed); sie unterbricht auch unter dem Mauszeiger, solange die Tastatur in der Komponente ist und solange das Karussell verborgen ist. Am Ende eines Karussells ohne Schleife kommt das erste Element von der Seite zurück. Jeder Schritt geht wie eine Geste über ue_current_changing: Ein abgelehntes Element wird übersprungen, das nächste wird gefragt. Ein Bildschirmleser wird während der Wiedergabe nicht über jeden Schritt informiert.


Karten und Beschriftung per Vorlage #

Eine Karte zeigt oben ihr Bild, ihren Titel (is_title), ihren Untertitel (is_subtitle), ihren Inhalt (is_text), ihre Tags (is_tags, durch Kommas getrennt, gefärbt durch is_tag_tones: New=success|Sale=danger) und ein Badge (is_badge). Der Inhalt aller Karten kann über eine Vorlage geschrieben werden, is_card_template, und die Beschriftung unter dem Karussell über is_caption_template: Rich-Text-Auszeichnung, in der {price} ein Feld des Elements ist — eines Ihrer eigenen (of_set_field), eine Spalte des DataStores, aus dem es stammt, oder ein eingebautes Feld (key, title, subtitle, text, image, badge, tags, position, count). {position} und {count} zählen die gezeichneten Elemente, wie der Zähler. {sold:dd/mm/yyyy hh:mm} schreibt ein Datum oder einen Zeitpunkt, {price:#,##0.00} eine Zahl: die Anzeigeformate einer DataWindow-Spalte (mm nach einer Stunde = die Minuten, [shortdate], [longdate], [time], Abschnitte positiv;negativ;null), in der Anzeigesprache — ein Wert, den das Format nicht schreiben kann, wird so angezeigt, wie er ist. {?x}…{/x} behält ein Stück, wenn das Feld etwas enthält, {!x}…{/x}, wenn es nichts enthält, {{ }} sind geschweifte Klammern. Ein Wert wird so angezeigt, wie er ist, nie als Auszeichnung gelesen; {x:raw} behält ihn als Auszeichnung — nur für Ihre eigenen Felder: Auf einer Datenbankspalte würde es die Daten als Auszeichnung lesen, Aktionszonen inbegriffen. {title}, {subtitle}, {text} und {badge}, von Ihrem Code geschrieben, sind Auszeichnung, wie in der Beschriftung; aus einer Spalte gelesen, Text.

// A price, a field of our own, then the body of every card
uo_shop.of_set_field(/*key*/ "p1", /*field*/ "price", /*value*/ "$12.90")
uo_shop.is_card_template = "{?price}From [b]{price}[/b]{/price}{!price}Price on request{/price}"

// Under the carousel : the place of the item in front, then its title
uo_shop.is_caption_template = "{position} / {count} - [b]{title}[/b]"

Aus einem DataStore #

of_from_datastore macht aus jeder Zeile eines DataStores, eines DataWindow oder eines DataWindowChild ein Element — derselbe Aufruf. Sein Schlüssel ist die RowID der Zeile — sie benennt ihre Zeile, solange der DataStore weder geleert noch neu gelesen wird (Reset, Retrieve und ImportString vergeben die RowIDs 1, 2, 3 erneut), und of_item(key).of_row() findet sie — oder der Wert der Spalte ROLE_KEY, der Schlüssel, den Sie angeben, sobald Sie aktualisieren. Eine Zeile, deren Schlüssel leer, ungültig, schon gesehen oder von einem von Hand hinzugefügten Element belegt ist, wird nicht geladen: Der Aufruf gibt 0 zurück, und of_get_last_error nennt sie — geben Sie Ihren Elementen von Hand Schlüssel, die keine Zahlen sind. Eine Spalte spielt eine Rolle, wenn sie so heißt (key, title, subtitle, text, image, badge, tags, color) oder wenn of_map es sagt; die Spalte ROLE_COLOR (ein RGB() oder #rrggbb) färbt den Streifen einer Karte. of_map und of_reload_row aktualisieren die Elemente an Ort und Stelle (Kennzeichen, Felder, Handle und Platz bleiben). Ein zweites Laden ebenso, mit ROLE_KEY: Ein Element, dessen Schlüssel zurückkommt, behält seine Kennzeichen, seine Felder und seinen Handle. Ohne ROLE_KEY ist ein zweites Laden eine neue Epoche: Eine zurückkommende RowID kann einen anderen Datensatz benennen, jedes Element der Zeilen wird neu erstellt (nichts wird geerbt, die Handles der alten werden freigegeben), und kommt der vordere Schlüssel zurück, sagt es ue_current_changed mit as_from_key = as_key. In jedem Fall nehmen die Elemente die Reihenfolge der Zeilen an (ein of_move_item überlebt kein Laden), die Elemente verschwundener Zeilen gehen, die von Hand hinzugefügten bleiben, nach den Zeilen; ein mit of_remove_item entferntes Zeilenelement kommt mit seiner Zeile zurück — blenden Sie es lieber aus (ib_visible). Datumswerte werden in der regionalen Reihenfolge des Arbeitsplatzes gelesen, Zahlen werden mit Punkt geschrieben, CHAR-Werte ohne ihre Auffüllung, beim Laden wie nach of_reload_row. Was eine Spalte liefert, ist Text, nie Auszeichnung — ein [action=x] aus der Datenbank ist nicht anklickbar —, und ein Bild aus einer Spalte greift nie auf einen Netzwerkpfad zu (\\server\freigabe: ue_image_failed mit REASON_UNC). Ändert sich die Spalte ROLE_KEY einer neu gelesenen Zeile, nimmt das Element den neuen Schlüssel an: Der Handle des alten wird freigegeben. Jede Spalte ist ein Feld der Vorlagen.

// The rows of the albums : columns named title and subtitle play their role
ids_albums.Retrieve()

// The picture is in a column with another name
uo_covers.of_map(/*role*/ u_pbt_carousel.ROLE_IMAGE, /*column*/ "cover_file")

// One item per row, its key the RowID of the row
uo_covers.of_from_datastore(/*ads*/ ids_albums)
// Master-detail : the DataWindow follows the item in front, and the carousel reads its rows
uo_covers.ib_sync_row = true
uo_covers.of_from_datastore(/*adw*/ dw_albums)

// event rowfocuschanged of dw_albums : the item of the row comes in front
uo_covers.of_select_row(/*row*/ currentrow)

Eigenschaften #

EigenschaftTypStandardZweck
is_stylestringSTYLE_COVERFLOWDie Anordnung: STYLE_COVERFLOW (das aktuelle Element von vorn, seine Nachbarn perspektivisch gedreht), STYLE_CAROUSEL (ein flacher Streifen, mehrere Elemente ganz), STYLE_STACK (ein Kartenstapel), STYLE_HERO (ein einziges Element auf der ganzen Fläche, ein Banner). Ein anderer Wert wird abgelehnt: der alte bleibt, of_get_last_error sagt warum
is_item_stylestringITEM_AUTODie Ansicht jedes Elements, das selbst keine wählt: ITEM_AUTO (nach dem, was es trägt, siehe oben), ITEM_IMAGE, ITEM_TEXT, ITEM_CARD. Ein anderer Wert wird abgelehnt
is_fitstringFIT_COVERWie ein Bild seine Kachel füllt: FIT_COVER (die Kachel ist voll, das Bild beschnitten) oder FIT_CONTAIN (das ganze Bild). Ein anderer Wert wird abgelehnt
ib_reflectionbooleanfalseEine Spiegelung unter den Elementen, wie auf einem glänzenden Boden
ib_loopbooleanfalseNach dem letzten Element kommt das erste (und vor dem ersten das letzte). Es braucht mindestens drei Elemente
il_autoplay_mslong0Automatische Wiedergabe: Das nächste Element kommt alle il_autoplay_ms Millisekunden nach vorn (mindestens 500, ein kleinerer Wert wird darauf angehoben); 0 hält sie an. Eine Schaltfläche PAUSE / WIEDERGABE erscheint unter dem Karussell (ib_autoplay_button); sie unterbricht auch unter dem Mauszeiger, solange die Tastatur in der Komponente ist und solange das Karussell verborgen ist. Am Ende eines Karussells ohne Schleife kommt das erste Element von der Seite zurück; ein Element, das ue_current_changing ablehnt, wird übersprungen
ib_show_captionbooleantrueDie Beschriftung des vorderen Elements: sein Titel (und sein Untertitel), mit dem Akzent unterstrichen, oder was is_caption_template schreibt; sie steht direkt darunter oder auf seinem Fuß (is_caption_position)
is_caption_positionstringCAPTION_AUTOWo die Beschriftung steht: CAPTION_BELOW (direkt unter dem vorderen Element, unter seiner Spiegelung, falls vorhanden), CAPTION_OVERLAY (auf seinem Fuß, weiß auf dunklem Schleier), CAPTION_AUTO (unter einem Bild — in einem Banner auf seinem Fuß —, und keine unter Karten oder Texten, die ihren Titel schon schreiben, es sei denn, is_caption_template sagt, was zu schreiben ist). Ein anderer Wert wird abgelehnt
ib_autoplay_buttonbooleantrueEine Schaltfläche PAUSE / WIEDERGABE unter dem Karussell, solange il_autoplay_ms läuft, und ein dünner Balken, der sich bis zum nächsten Element füllt: Wer liest, kann anhalten, was sich bewegt. Die Pause des Benutzers hält bis WIEDERGABE; ue_autoplay_changed sagt es. false: keine Schaltfläche
is_indicatorstringINDICATOR_AUTOWas zeigt, wo man ist, unter der Beschriftung: INDICATOR_AUTO (Punkte bis 12 Elemente, darüber eine Bildlaufleiste), INDICATOR_DOTS (anklickbare Punkte, bis 48 Elemente: darüber die Leiste), INDICATOR_SCROLLBAR (eine Leiste zum Klicken und Ziehen), INDICATOR_COUNTER (3 / 12), INDICATOR_NONE. Ein anderer Wert wird abgelehnt
ib_arrowsbooleantrueDie beiden Pfeilschaltflächen an den Seiten: die linke geht immer nach links
ii_item_widthinteger0Die Breite einer Kachel in Pixeln (24 bis 4000, ein Wert außerhalb wird zurückgeführt); 0: nach der Größe der Komponente und is_item_ratio. Eine gesetzte Breite mit einer Höhe 0: Die Höhe folgt dem Seitenverhältnis. Ohne Wirkung auf STYLE_HERO: Sein Element nimmt die ganze Fläche ein
ii_item_heightinteger0Die Höhe einer Kachel in Pixeln (24 bis 4000); 0: nach der Größe der Komponente, sodass Nachbarn und Beschriftung sichtbar bleiben. Eine gesetzte Höhe mit einer Breite 0: Die Breite folgt dem Seitenverhältnis. Ohne Wirkung auf STYLE_HERO
is_item_ratiostring""Das Seitenverhältnis einer Kachel, Breite:Höhe: "1:1", "3:4", "16:9"… Die Kachel behält es, wie groß die Komponente auch ist. Leer: nach der Ansicht der meisten Elemente — 1:1 für Bilder, 3:4 für Karten, 16:9 für Texte. Ein Wert, der nicht aus zwei positiven, durch : verbundenen Zahlen besteht, wird abgelehnt. Ohne Wirkung auf STYLE_HERO
ii_angleinteger62Die Drehung der Cover an den Seiten des Cover Flow, in Grad, von 0 (flach) bis 80; 62 ist die von iTunes
ii_spacinginteger100Der Abstand der Cover des Cover Flow und der Kacheln eines Streifens, in Prozent dessen, was das Karussell berechnet: 100 verteilt die Cover über die verfügbare Breite, 25 bis 300 rücken sie zusammen oder auseinander
ib_shadebooleantrueDie Cover an den Seiten verdunkeln sich mit ihrer Entfernung, damit das vordere Element den Blick auf sich zieht; die hinter einem Stapel wartenden Karten auch
is_transitionstringTRANSITION_SLIDEWie ein Banner (STYLE_HERO) sein Element wechselt: TRANSITION_SLIDE (das nächste gleitet von der Seite herein) oder TRANSITION_FADE (es blendet ein). Ein anderer Wert wird abgelehnt
is_alignstringALIGN_CENTERWo das aktuelle Element auf einem Streifen (STYLE_CAROUSEL) steht: ALIGN_CENTER (in der Mitte) oder ALIGN_START (die Reihe eines Videodienstes, am Anfangsrand ausgerichtet, die um einen Bildschirm blättert: siehe oben). Ohne Wirkung auf die anderen Anordnungen. Ein anderer Wert wird abgelehnt
is_card_templatestring""Der Inhalt jeder Karte, über eine Vorlage geschrieben (siehe oben). Eine gesetzte Vorlage macht jedes ITEM_AUTO-Element zur Karte. Leer: der Text des Elements (is_text)
is_caption_templatestring""Die Beschriftung unter dem Karussell, über eine Vorlage geschrieben (dieselben Felder). Leer: der Titel und darunter der Untertitel
is_tag_tonesstring""Der Ton jedes Tags, Tag=Ton verbunden durch `: New=successSale=danger. Töne: TONE_SUCCESS, TONE_WARN, TONE_DANGER, TONE_INFO (der Akzent), TONE_NEUTRAL`. Ein nicht aufgeführtes Tag oder ein unbekannter Ton ist neutral
is_badge_formatstring""Das Anzeigeformat der Badges, die eine Zahl oder ein Datum sind — eine ROLE_BADGE-Spalte des DataStores oder ein Wert, den Ihr Code schreibt: "$#,##0.00", "dd/mm/yyyy", das Format einer DataWindow-Spalte, in der Anzeigesprache. Ein Badge, das keines von beiden ist (Auszeichnung, ein Wort), wird so angezeigt, wie es ist. Leer: jedes Badge, wie es ist
ib_sync_rowbooleanfalseMaster-Detail: Das an of_from_datastore übergebene DataWindow (oder DataWindowChild) folgt dem vorderen Element — ScrollToRow auf seine Zeile bei jedem Wechsel, Geste oder Code. In der Gegenrichtung rufen Sie of_select_row aus seinem RowFocusChanged auf. Ein DataStore hat keine Zeile zu zeigen: nichts bewegt sich; ein von Hand hinzugefügtes Element hat keine Zeile
ib_veto_changesbooleanfalseOpt-in: vor jedem Wechsel des vorderen Elements ue_current_changing fragen, den des Benutzers, der automatischen Wiedergabe wie den von of_select_item. Die automatische Wiedergabe überspringt ein abgelehntes Element; die Tastatur bleibt stehen — ein immer abgelehntes Element wird besser ausgegraut. Ein Befehl Ihres Codes in ue_current_changing hat Vorrang: Die folgende Antwort ändert nichts. Standardmäßig aus, wie jedes abbrechbare Ereignis der Bibliothek
ib_animatedbooleantrueDie Elemente gleiten an ihren neuen Platz. Ein auf reduzierte Bewegung eingestellter Arbeitsplatz springt direkt dorthin, es sei denn, die Anwendung besteht darauf (PBT_SetAnimationPolicy)
ii_anim_durationinteger450Dauer einer Bewegung in Millisekunden (0 bis 5000)
is_anim_easingstringEASING_EASE_OUTDie Kurve der Bewegung: EASING_LINEAR, EASING_EASE_OUT, EASING_BACK_OUT (schießt etwas über und kehrt zurück), EASING_BOUNCE_OUT (federt), EASING_ELASTIC_OUT (schwingt)
ib_enabledbooleantruefalse graut das Karussell aus: Die Elemente bleiben sichtbar, nichts reagiert mehr auf den Benutzer (Klick, Tastatur, Mausrad, Wischen, automatische Wiedergabe)
is_theme_stylestring""Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen
is_theme_modestring""Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen
il_theme_accentlong-1Akzentfarbe dieser Komponente (-1 = Akzent der Anwendung, sonst der 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

Sein Handle, über of_item(key). Ein Lesen fragt das Karussell, wie es jetzt ist.

EigenschaftTypStandardZweck
is_titlestring""Titel des Elements: die Beschriftung, wenn es vorn steht, und die oberste Zeile einer Karte. Akzeptiert die Rich-Text-Auszeichnung. Leer zeigt das Element seinen Schlüssel
is_subtitlestring""Die zweite Zeile, unter dem Titel einer Karte und der Beschriftung (Auszeichnung erlaubt). Ein Bild mit Untertitel bleibt ein Bild: Der Untertitel kommt in seine Beschriftung
is_textstring""Der Text (Auszeichnung akzeptiert): die ganze Ansicht eines Textelements, der Inhalt einer Karte, solange is_card_template leer ist. Eine Zone [action=x] löst auf dem vorderen Element ue_action_clicked aus
is_imagestring""Das Bild: eine Datei des Arbeitsplatzes, eine Ressource datei.dll:name, ein im Design gezeichnetes Symbol mono: / tint:, eine https://-Adresse. http:// wird abgelehnt (ue_image_failed, REASON_INSECURE), ebenso ein Netzwerkpfad aus einer DataStore-Spalte (REASON_UNC). Solange das Bild unterwegs ist, erscheint ein Platzhalter im Design
is_badgestring""Kleines Badge (Auszeichnung erlaubt): ein Preis, eine Anzahl, im Akzent — oben rechts auf einer Karte, auf der Ecke eines Bildes. Ein Bild mit Badge bleibt ein Bild
is_tagsstring""Tags einer Karte, durch Kommas getrennt: Vinyl, Sale. Jedes ist ein durch is_tag_tones des Karussells gefärbtes Kürzel
is_stylestring""Die Ansicht dieses Elements (ITEM_* von u_pbt_carousel); leer: es folgt is_item_style des Karussells. Ein anderer Wert wird abgelehnt: der alte bleibt, of_get_last_error des Karussells sagt warum
ib_visiblebooleantruefalse nimmt das Element aus dem Karussell; es behält Schlüssel und Platz. Stand es vorn, nimmt das nächste seinen Platz ein (ue_current_changed)
ib_enabledbooleantruefalse graut das Element aus: Der Benutzer kann es weder nach vorn holen noch anklicken, Tastatur und Mausrad überspringen es. Ihr Code wählt es trotzdem aus
of_position ( ) → long——Gibt den Platz des Elements im Karussell jetzt zurück, ab 1 gezählt (ausgeblendete Elemente inbegriffen); 0, wenn das Karussell es nicht enthält
of_row ( ) → long——Gibt die heutige Zeilennummer der Zeile, aus der das Element stammt, in den an of_from_datastore übergebenen Zeilen zurück — nach einer Sortierung, einem Filter oder dem Löschen anderer Zeilen, solange der DataStore weder geleert noch neu gelesen wird; 0 für ein von Hand hinzugefügtes Element oder eines, dessen Zeile verschwunden ist
of_face ( ) → string——Die Ansicht, mit der das Element jetzt gezeichnet wird: "image", "text" oder "card" (ITEM_IMAGE, ITEM_TEXT, ITEM_CARD) — was is_style gewählt oder ITEM_AUTO abgeleitet hat; leer, wenn das Karussell es nicht enthält
is_tooltipstring""Einfacher Tooltip beim Überfahren des Items
is_super_tooltip_titlestring""Titel des erweiterten Item-Tooltips (hat Vorrang vor is_tooltip)
is_super_tooltip_textstring""Text des erweiterten Item-Tooltips (Rich-Markup zulässig)
is_super_tooltip_imagestring""Bild des erweiterten Item-Tooltips
il_accentlong-1Akzent des Elements: Der Streifen oben auf einer Karte (den er erscheinen lässt) und auf einem Textfeld sowie das Badge übernehmen ihn; er geht der Farbe einer ROLE_COLOR-Spalte vor. Die Punkte und die Beschriftung behalten den Akzent der Komponente. -1 = der der Komponente
il_back_colorlong-1Hintergrund einer Text- oder Kartenansicht, als RGB(r,g,b) (-1 = was das Design vorgibt). Eine Bildansicht hat keinen Hintergrund
il_text_colorlong-1Textfarbe einer Text- oder Kartenansicht (-1 = was das Design vorgibt)
il_back_color_hoverlong-1Hintergrund einer Text- oder Kartenansicht unter dem Mauszeiger, in RGB(r,g,b) (-1 = ihr gewohnter Hintergrund). Beim Überfahren bewegt sich nichts : nur die Farbe ändert sich
il_text_color_hoverlong-1Textfarbe einer Text- oder Kartenansicht unter dem Mauszeiger (-1 = ihre gewohnte Farbe)

Drei Lesefunktionen des Handles, nur lesend: of_position() liefert den Platz des Elements ab 1, of_row() die Nummer seiner Zeile im DataStore (0 für ein von Hand hinzugefügtes Element), of_face() die gewählte Ansicht. Ein Element wird über of_move_item des Karussells verschoben.


Methoden #

MethodeZweck
of_add_item (string as_key, string as_title)Fügt ein Element am Ende des Karussells hinzu, nur mit Titel (eine Karte): Bild, Text, Untertitel… werden über seinen Handle gesetzt. Sein Schlüssel ist im Karussell eindeutig. Das erste Element eines leeren Karussells kommt nach vorn (ue_current_changed). Gibt 0 zurück, sobald hinzugefügt, -5 für einen leeren Schlüssel, einen mit / oder `, einen, der mit __ beginnt, oder einen schon vergebenen (Elemente eines DataStores inbegriffen), -2`, wenn die Komponente nicht erstellt ist
of_add_item (string as_key, string as_title, string as_image)Dasselbe mit seinem Bild. Mit ITEM_AUTO ergeben ein Bild und ein Titel allein ein Bild-Element, der Titel als Beschriftung. Gibt 0 zurück, sobald hinzugefügt, -5 wie oben, -2, wenn die Komponente nicht erstellt ist
of_clear ( )Leert das Karussell: Elemente (die eines DataStores inbegriffen) und ihre Handles; der DataStore bleibt für ein neues of_from_datastore gebunden, die Optionen bleiben. ue_current_changed folgt mit leerem Schlüssel, wenn ein Element vorn stand. Gibt 0 zurück, sobald angewendet, -2, wenn die Komponente nicht erstellt ist
of_current_key ( )Der Schlüssel des vorderen Elements, wer es auch dorthin gebracht hat; leer, wenn das Karussell leer ist. Live gelesen
of_current_row ( )Die heutige Zeilennummer des vorderen Elements in den an of_from_datastore übergebenen Zeilen — nach einer Sortierung, einem Filter oder dem Löschen anderer Zeilen. Gibt 0 zurück, wenn das Karussell leer ist, wenn das vordere Element von Hand hinzugefügt wurde oder seine Zeile verschwunden ist
of_from_datastore (datastore ads)Macht aus jeder Zeile des DataStores ein Element (siehe oben). Ein zweites Laden aktualisiert die Elemente mit ROLE_KEY an Ort und Stelle, ohne ihn erstellt es sie neu (eine neue Epoche: nichts wird geerbt); die verschwundener Zeilen gehen (Handles freigegeben), die von Hand hinzugefügten bleiben, nach den Zeilen; eine nicht geladene Zeile nennt of_get_last_error. Gibt 0 zurück, sobald geladen, -5, wenn der DataStore ungültig ist, -2, wenn die Komponente nicht erstellt ist
of_from_datastore (datawindow adw)Dasselbe aus den Zeilen eines DataWindow, gelesen über einen DataStore, der sie teilt (ShareData). Gibt 0 zurück, sobald geladen, -5, wenn das DataWindow ungültig ist oder seine Zeilen nicht teilt (of_get_last_error sagt es), -2, wenn die Komponente nicht erstellt ist
of_from_datastore (datawindowchild adwc)Dasselbe aus den Zeilen eines DataWindowChild (ein DropDown-DataWindow, ein verschachtelter Bericht). Gibt 0 zurück, sobald geladen, -5, wenn es ungültig ist, -2, wenn die Komponente nicht erstellt ist
of_get_field (string as_key, string as_field)Liest ein Feld eines Elements, live: eines Ihrer eigenen, eine Spalte seines DataStores oder ein eingebautes Feld (title, position, count…). Eine leere Zeichenkette, wenn es keines hat
of_get_last_error ( )Warum der letzte Aufruf fehlschlug: eine Methode, die -5 oder -4 zurückgab, ein abgelehnter Wert (is_style, is_item_style, is_indicator, is_fit, is_caption_position, is_transition, is_item_ratio, is_align, is_style eines Elements), ein während einer Wartezeit gemachter Aufruf (nichts konnte beurteilt werden), die Zeilen, die ein Laden ausgelassen hat. Von jeder handelnden Methode geleert (ein Lesen lässt ihn stehen); sonst der letzte Fehler der Bibliothek
of_insert_item (string as_key, string as_title, string as_image, long al_position)Fügt ein Element an einem ab 1 gezählten Platz hinzu (über den letzten hinaus: am Ende). Das vordere Element bleibt vorn. Gibt 0 zurück, sobald hinzugefügt, -5 wie of_add_item, -2, wenn die Komponente nicht erstellt ist
of_is_playing ( )TRUE, solange die automatische Wiedergabe läuft: il_autoplay_ms ist gesetzt und niemand hat PAUSE gedrückt (ein Mauszeiger über dem Karussell unterbricht sie kurz: sie läuft weiter). Live gelesen
of_item (string as_key)Gibt den Handle eines Elements zurück (beim ersten Zugriff erstellt, freigegeben, wenn das Element entfernt wird)
of_map (string as_role, string as_column)Gibt einer Spalte des DataStores eine Rolle, wenn ihr Name es nicht sagt (ROLE_KEY, ROLE_TITLE, ROLE_SUBTITLE, ROLE_TEXT, ROLE_IMAGE, ROLE_BADGE, ROLE_TAGS, ROLE_COLOR). Vor oder nach of_from_datastore: danach werden die Zeilen an Ort und Stelle neu gelesen. Eine leere Spalte gibt die Rolle an die gleichnamige Spalte zurück; ein neues ROLE_KEY gibt den Elementen neue Schlüssel (die Handles der alten werden freigegeben). Gibt 0 zurück, sobald gesetzt, -5 für eine unbekannte Rolle oder eine Spalte, die der DataStore nicht hat, -2, wenn die Komponente nicht erstellt ist
of_move_item (string as_key, long al_position)Verschiebt ein Element an einen ab 1 gezählten Platz (über den letzten hinaus: den letzten). Das vordere Element bleibt vorn. Gibt 0 zurück, sobald verschoben, -5 für ein unbekanntes Element, -2, wenn die Komponente nicht erstellt ist
of_next ( )Holt das nächste Element nach vorn (ausgegraute werden übersprungen; nach dem letzten das erste mit ib_loop), wie die Pfeiltaste in seine Richtung (Rechts, von rechts nach links Links), und löst ue_current_changed aus. Gibt 0 zurück, sobald erledigt (auch am Ende: nichts bewegt sich, nichts wird ausgelöst), -4, wenn ue_current_changing abgelehnt hat, -5 während einer Wartezeit (nichts konnte beurteilt werden), -2, wenn die Komponente nicht erstellt ist
of_pause ( )Pausiert die automatische Wiedergabe, wie die Schaltfläche PAUSE: Das vordere Element bleibt bis of_play (oder WIEDERGABE). ue_autoplay_changed folgt — ein Befehl des Codes löst es wie die Schaltfläche aus. Gibt 0 zurück, sobald pausiert (auch wenn sie es schon ist: nichts wird ausgelöst), -5, wenn il_autoplay_ms 0 ist, -2, wenn die Komponente nicht erstellt ist
of_play ( )Startet die automatische Wiedergabe nach einer Pause neu — die Schaltfläche PAUSE des Benutzers oder of_pause. ue_autoplay_changed folgt. Gibt 0 zurück, sobald sie läuft (auch wenn sie schon läuft: nichts wird ausgelöst), -5, wenn il_autoplay_ms 0 ist (nichts abzuspielen), -2, wenn die Komponente nicht erstellt ist
of_previous ( )Holt das vorige Element nach vorn, wie die Pfeiltaste in seine Richtung. Gibt 0 zurück, sobald erledigt (auch am Anfang: nichts bewegt sich, nichts wird ausgelöst), -4, wenn ue_current_changing abgelehnt hat, -5 während einer Wartezeit, -2, wenn die Komponente nicht erstellt ist
of_reload_row (long al_row)Sendet eine Zeile des DataStores von of_from_datastore erneut an das Karussell, jetzt gelesen, nachdem Ihr Code sie geändert hat (SetItem, ein Eingabefenster); sein Element wird an Ort und Stelle aktualisiert (Kennzeichen, Felder, Handle und Platz bleiben). Eine Zeile, die das Karussell noch nicht hält (InsertRow), kommt nach dem letzten Zeilenelement. Hat sich die Spalte ROLE_KEY der Zeile geändert, nimmt das Element den neuen Schlüssel an: Der Handle des alten wird freigegeben und, stand es vorn, sagt es ue_current_changed. Gibt 0 zurück, sobald gesendet, -5, wenn nichts gebunden ist, die Zeile nicht existiert oder ihr Schlüssel leer, ungültig oder von einem anderen Element belegt ist (of_get_last_error sagt es), -2, wenn die Komponente nicht erstellt ist
of_remove_item (string as_key)Entfernt ein Element und gibt seinen Handle frei; das vordere Element zu entfernen holt das nächste nach vorn (ue_current_changed). Ein Zeilenelement eines DataStores kommt mit seiner Zeile zurück (of_reload_row, ein neues Laden): Blenden Sie es aus (ib_visible) oder löschen Sie die Zeile. Gibt 0 zurück, sobald entfernt, -5 für ein unbekanntes Element, -2, wenn die Komponente nicht erstellt ist
of_reset ( )Leert das Karussell, vergisst den DataStore und setzt jede Eigenschaft auf ihren Standardwert zurück. Gibt 0 zurück, sobald angewendet, -2, wenn die Komponente nicht erstellt ist
of_select_item (string as_key)Holt ein Element nach vorn, wie ein Klick: Es gleitet dorthin, und ue_current_changed folgt. Mit ib_veto_changes wird zuerst ue_current_changing gestellt. Ein ausgegrautes Element wird trotzdem ausgewählt: Das Ausgrauen hält den Benutzer auf, nicht Ihren Code. Gibt 0 zurück, sobald erledigt (oder schon vorn: nichts wird ausgelöst), -4, wenn ue_current_changing abgelehnt hat, -5 für ein unbekanntes oder nicht gezeichnetes Element (ausgeblendet, über der Demogrenze), -2, wenn die Komponente nicht erstellt ist
of_select_row (long al_row)Holt das Element einer Zeile der an of_from_datastore übergebenen Zeilen nach vorn — al_row ist die heutige Zeilennummer, was ROLE_KEY auch sagt: das Master-Detail eines DataWindow, aus seinem RowFocusChanged aufgerufen. Wie of_select_item auf seinem Schlüssel: ue_current_changed folgt, ib_veto_changes fragt zuerst. Gibt 0 zurück, sobald vorn (oder schon vorn), -4, wenn ue_current_changing abgelehnt hat, -5, wenn nichts gebunden ist, die Zeile nicht existiert oder kein Element ergab (beim Laden ausgelassen, entfernt, ausgeblendet, über der Demogrenze), -2, wenn die Komponente nicht erstellt ist
of_set_field (string as_key, string as_field, string as_value)Gibt einem Element ein eigenes Feld für die Vorlagen: {price}; es geht einer gleichnamigen DataStore-Spalte vor. Ein Feldname: Buchstaben, Ziffern und _, ohne Ziffer am Anfang. Gibt 0 zurück, sobald gesetzt, -5 für ein unbekanntes Element oder einen ungültigen Namen, -2, wenn die Komponente nicht erstellt ist

Ereignisse #

EventAusgelöst wenn
ue_current_changed (string as_from_key, string as_key)Das vordere Element hat gewechselt: ein Klick auf einen Nachbarn, die Tastatur, das Mausrad, ein Wischen, ein Punkt, ein Pfeil, die automatische Wiedergabe oder Ihr Code (of_select_item, of_next, of_previous). Auch wenn das vordere Element geht (ausgeblendet, entfernt: das nächste nimmt seinen Platz ein) wenn das erste Element in einem leeren Karussell ankommt (as_from_key leer), und wenn ein neues Laden ohne ROLE_KEY den vorderen Schlüssel einem anderen Datensatz gibt (as_from_key = as_key). as_key leer: das Karussell ist leer. Mit ib_sync_row zeigt das gebundene DataWindow die Zeile bereits
ue_current_changing (string as_from_key, string as_key) → booleanAbbrechbar, vor einem Wechsel des vorderen Elements gestellt, nur wenn ib_veto_changes = true: Geste, automatische Wiedergabe und of_select_item (also of_next, of_previous). FALSE zurückzugeben lässt das Element vorn, und of_select_item gibt dann -4 zurück. Standard: TRUE
ue_item_clicked (string as_key)Das vordere Element wurde angeklickt (oder Leertaste gedrückt). Ein Klick auf einen Nachbarn holt ihn stattdessen nach vorn (ue_current_changed) — und ein Doppelklick auf einen Nachbarn holt ihn nur, ohne dieses Ereignis; eine Zone [action=x] löst stattdessen ue_action_clicked aus; ein ausgegrautes Element löst nichts aus
ue_item_opened (string as_key)Ein Doppelklick auf das vordere Element oder Eingabe: Öffnen Sie es. Ein Doppelklick auf einen Nachbarn holt ihn nur nach vorn
ue_item_rclicked (string as_key, long al_x, long al_y)Ein Rechtsklick auf ein Element oder die Kontextmenütaste (oder Umschalt + F10) auf dem vorderen Element. al_x, al_y sind Bildschirmpixel; für ein PowerBuilder-Menü PopMenu(PointerX(), PointerY()) Ihres Fensters
ue_action_clicked (string as_key, string as_action)Eine Zone [action=x] im Text des vorderen Elements wurde angeklickt: as_action = "x"
ue_autoplay_changed (boolean ab_playing)Die automatische Wiedergabe wurde pausiert (ab_playing = false) oder fortgesetzt (true): die Schaltfläche PAUSE / WIEDERGABE unter dem Karussell oder Ihr Code (of_pause, of_play lösen es auch aus). Ein Mauszeiger über dem Karussell unterbricht sie, ohne es auszulösen
ue_image_failed (string as_key, string as_reason)Das Bild eines Elements konnte nicht angezeigt werden: as_reason ist REASON_INSECURE (eine http://-Adresse), REASON_UNC (ein Netzwerkpfad aus einer DataStore-Spalte, vor jeder Anfrage abgelehnt) oder REASON_NOT_FOUND (Datei nicht gefunden). Einmal pro Element und Bild gemeldet
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)

Tastatur und Maus #


Beispiele #

Ein Produktschaufenster #

// A flat strip : several products in full, a counter under it
uo_shop.is_style = u_pbt_carousel.STYLE_CAROUSEL
uo_shop.is_indicator = u_pbt_carousel.INDICATOR_COUNTER

// A product : a picture and a title, then a badge and tags (it becomes a card)
uo_shop.of_add_item(/*key*/ "p1", /*title*/ "Northern Lights", /*image*/ "img\packimages.dll:SVG/COVERS/COVER-01")
uo_shop.of_item(/*key*/ "p1").is_badge = "New"
uo_shop.of_item(/*key*/ "p1").is_tags = "Vinyl, Sale"

// The tone of each tag, and the price in the body of every card
uo_shop.is_tag_tones = "Vinyl=info|Sale=danger"
uo_shop.of_set_field(/*key*/ "p1", /*field*/ "price", /*value*/ "$12.90")
uo_shop.is_card_template = "From [b]{price}[/b]"

Vor dem Wechsel des Elements fragen #

// Once : ask before the item in front changes
uo_covers.ib_veto_changes = true

// event ue_current_changing of uo_covers : not while the form beside it is not saved
if ib_unsaved then return false
return true

Ein Element eines DataStores in Ihrem Fenster öffnen #

// Local variables
long ll_row

// event ue_item_opened of uo_covers : the row of the item, edited in a RESPONSE window (the code waits for it)
ll_row = uo_covers.of_item(/*key*/ as_key).of_row()
OpenWithParm(w_album_edit, ll_row)

// The row may have changed : the item follows it
uo_covers.of_reload_row(/*row*/ ll_row)

Neuigkeiten, die von selbst weiterlaufen #

// A banner : one item on the whole surface
uo_news.is_style = u_pbt_carousel.STYLE_HERO

// Text items : rich text on a themed panel, with an [action] zone
uo_news.of_add_item(/*key*/ "n1", /*title*/ "Release")
uo_news.of_item(/*key*/ "n1").is_text = "[b]Version 5.0[/b] is out. [action=notes]Read the notes[/action]"
uo_news.of_add_item(/*key*/ "n2", /*title*/ "Webinar")
uo_news.of_item(/*key*/ "n2").is_text = "[b]Webinar[/b] on Thursday at 10:00."
uo_news.of_add_item(/*key*/ "n3", /*title*/ "Support")
uo_news.of_item(/*key*/ "n3").is_text = "[b]Support[/b] answers within one day."

// A new one every 5 seconds, faded in, the first again after the last :
// a PAUSE button shows under the banner
uo_news.is_transition = u_pbt_carousel.TRANSITION_FADE
uo_news.il_autoplay_ms = 5000
uo_news.ib_loop = true
// event ue_action_clicked of uo_news : (string as_key, string as_action)
// The zone [action=notes] of the first item opens the release notes
if as_action = "notes" then Open(w_release_notes)

Ein großer Katalog #

// The products : one row = one item, its key the product code
ids_products.Retrieve()
uo_shop.of_map(/*role*/ u_pbt_carousel.ROLE_KEY, /*column*/ "code")
uo_shop.of_from_datastore(/*ads*/ ids_products)

// Only the tiles near the one in front are drawn : thousands of rows cost nothing.
// Beyond 12 items a scrollbar replaces the dots ; the user types a name to reach it
uo_shop.of_select_item(/*key*/ "P250")

Bewährte Praxis #

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
of_set_property · of_get_property · of_component_nameEine Eigenschaft über ihren Namen steuern3.1 Die Eigenschaften-Engine
is_accessible_name · is_accessible_descriptionName und Beschreibung, die ein Bildschirmleser sagt3.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.

← Komponentenreferenz · Inhalt des Handbuchs