PBToolboxAI v5 ← Site

ribbon — u_pbt_ribbon #

← Riferimento dei componenti · Sommario della guida

Barra multifunzione in stile Office: schede, gruppi, dodici tipi di controlli avanzati, menu applicativo, barra di accesso rapido, schede contestuali con banner e keytip.

▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Ribbon: l'anteprima, il codice che lo produce e questa pagina, affiancati.


In breve #

Userobjectu_pbt_ribbon
Classi degli itemn_pbt_ribbon_tab (scheda), n_pbt_ribbon_group (gruppo), n_pbt_ribbon_item (controllo), n_pbt_ribbon_menu_item (voce di menu), n_pbt_ribbon_ctx_group (gruppo di schede contestuali), n_pbt_ribbon_app_menu_item (voce del menu applicativo)
Serve perSostituire una barra dei menu e le relative barre degli strumenti con un'interfaccia di comando moderna, leggibile e gerarchizzata
AltezzaIntrinseca: la barra multifunzione si allinea sempre al proprio contenuto, nulla da attivare — vedere Altezza automatica
Limite in modalità demo2 schede al massimo — vedere La modalità demo

La regola d'oro: tutto passa dal percorso #

La barra multifunzione è una gerarchia a quattro livelli: scheda → gruppo → controllo → voce di menu. Non c'è alcun identificatore globale da gestire: ogni oggetto si raggiunge attraverso il percorso che vi conduce e ogni aggiunta avviene sul componente, all'indirizzo del genitore.

// Leggere o pilotare un controllo : sempre il percorso completo
uo_ribbon.of_item(/*keys*/ "home/clipboard/paste").ib_enabled = false

Due conseguenze pratiche e comode: due gruppi diversi possono usare lo stesso identificatore di controllo senza intralciarsi e gli event Le consegnano il percorso completo — sa sempre da dove proviene il clic.


Avvio rapido #

// event open della finestra

// Una scheda
uo_ribbon.of_add_tab(/*key*/ "home", /*title*/ "Home")

// Un gruppo: un pulsante grande e due piccoli
uo_ribbon.of_add_group(/*keys*/ "home/clipboard", /*title*/ "Appunti")
uo_ribbon.of_add_big_button(/*keys*/ "home/clipboard/paste", /*label*/ "Incolla", /*image*/ "mono:img\paste.svg")
uo_ribbon.of_add_button(/*keys*/ "home/clipboard/cut", /*label*/ "Taglia", /*image*/ "mono:img\cut.svg")
uo_ribbon.of_add_button(/*keys*/ "home/clipboard/copy", /*label*/ "Copia", /*image*/ "mono:img\copy.svg")

// Mostrare la scheda
uo_ribbon.of_select_tab(/*key*/ "home")
// event ue_clicked di uo_ribbon : (string as_keys)
choose case as_keys
    case "home/clipboard/paste" ; of_paste()
    case "home/clipboard/cut" ; of_cut()
    case "home/clipboard/copy" ; of_copy()
end choose

Proprietà #

ProprietàTipoPredefinitoRuolo
is_app_buttonstring""Etichetta del pulsante applicativo, in alto a sinistra, che apre il menu applicativo. Rinominarlo conserva il suo menu; una stringa vuota rimuove il pulsante, con il suo menu. Le voci del menu applicativo richiedono prima il pulsante
ib_minimizedbooleanfalsetrue riduce la barra multifunzione alle sole intestazioni delle schede; un clic su una scheda la espande temporaneamente. Impostato dal codice, attiva ue_minimized come il gesto dell'utente — nulla quando la barra è già in quello stato; ue_size_changed comunica la nuova altezza
ib_veto_gallerybooleanfalseChiedere prima che una piastrella di galleria venga scelta — dall'utente o da of_select_gallery_item (attiva ue_gallery_selection_changing, che può rifiutare; un of_select_gallery_item rifiutato restituisce -4). Inattivo per impostazione predefinita, come ogni evento annullabile: ogni domanda costa un andata e ritorno verso PowerBuilder (~35 ms). Lo metta a true quando la sua applicazione risponde
is_theme_stylestring""Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio
is_theme_modestring""Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio
il_theme_accentlong-1Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello del tema)
is_tooltipstring""Tooltip semplice mostrato al passaggio del mouse sul componente
is_super_tooltip_titlestring""Titolo del tooltip avanzato (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del tooltip avanzato (markup avanzato accettato)
is_super_tooltip_imagestring""Immagine del tooltip avanzato

Costante — ACCENT_LIGHT (-1): da passare come colore di una scheda o di un gruppo contestuale affinché segua il colore d'accento del tema, schiarito, anziché un colore fisso.

Proprietà di una scheda — n_pbt_ribbon_tab #

Ottenute tramite of_tab("tab"), si modificano a caldo.

ProprietàTipoPredefinitoRuolo
ib_visiblebooleantruefalse nasconde la scheda senza eliminarla — è il meccanismo stesso delle schede contestuali
is_titlestring""Titolo della scheda. Posto da of_add_tab; scriverlo qui lo cambia, leggerlo dice cosa mostra
is_keytipstring""Tasto di accesso rapido mostrato dopo aver premuto Alt ("H" per Home). Una lettera o più ("FP", come in Office), digitate una dopo l'altra; Backspace riprende l'ultima. Solo lettere A-Z e cifre: qualsiasi altro carattere è rifiutato — non cambia nulla, e of_get_last_error della barra dice perché
il_accentlong-1Colore d'accento di questa scheda (-1 = quello del tema)
il_back_colorlong-1Sfondo di questa scheda, a riposo
il_text_colorlong-1Colore del testo di questa scheda
il_back_color_hoverlong-1Sfondo di questa scheda sotto il puntatore
il_text_color_hoverlong-1Colore del testo di questa scheda sotto il puntatore
is_tooltipstring""Tooltip semplice, mostrato quando il puntatore si ferma sulla scheda
is_super_tooltip_titlestring""Titolo del suo tooltip avanzato (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del suo tooltip avanzato (testo formattato accettato)
is_super_tooltip_imagestring""Immagine del suo tooltip avanzato

Proprietà di un gruppo — n_pbt_ribbon_group #

Ottenute tramite of_group("tab/group").

ProprietàTipoPredefinitoRuolo
ib_visiblebooleantruefalse nasconde il gruppo e tutti i suoi controlli
is_titlestring""Dicitura sotto il gruppo. Posta da of_add_group; scriverla qui la cambia
ib_launcherbooleanfalseMostra la piccola freccia in basso a destra nel gruppo — l'avvio della finestra di dialogo (attiva ue_launcher). La freccia vive nella barra del titolo del gruppo, e un gruppo che la barra multifunzione ha dovuto ridurre per mancanza di spazio la mantiene nello stesso posto — viaggia inoltre nel pannello aperto dal gruppo ridotto.
il_accentlong-1Colore d'accento di questo gruppo (-1 = quello del tema)
il_back_colorlong-1Sfondo di questo gruppo, a riposo
il_text_colorlong-1Colore del testo di questo gruppo
il_back_color_hoverlong-1Sfondo di questo gruppo sotto il puntatore
il_text_color_hoverlong-1Colore del testo di questo gruppo sotto il puntatore
is_tooltipstring""Tooltip semplice, mostrato quando il puntatore si ferma sulla didascalia del gruppo (e sul suo pulsante quando il gruppo è ridotto)
is_super_tooltip_titlestring""Titolo del suo tooltip avanzato (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del suo tooltip avanzato (testo formattato accettato)
is_super_tooltip_imagestring""Immagine del suo tooltip avanzato

Costanti di modalità del selettore di colore: COLORMODE_PALETTE (tavolozza di campioni, modalità predefinita) e COLORMODE_OPEN (tavolozza completa con conferma).

Proprietà di un controllo — n_pbt_ribbon_item #

Ottenute tramite of_item("tab/group/control"). Si applicano a tutti i tipi di controllo; le proprietà prive di senso per un dato tipo vengono semplicemente ignorate.

ProprietàTipoPredefinitoRuolo
is_labelstring""Etichetta del controllo. Accetta il testo formattato con tag — nella barra come nel pannello di un gruppo ridotto; fate passare un testo dell'utente da of_escape_markup
is_imagestring""Immagine del controllo (pulsante, pulsante grande, pulsante diviso, pulsante a discesa, casella di controllo, selettore di colore, pulsante della barra di accesso rapido), con gli stessi prefissi dell'aggiunta (mono:, tint:). "" la rimuove. Riletta in tempo reale
ib_enabledbooleantruefalse disattiva il controllo e ne blocca l'attivazione
ib_checkedbooleanfalseStato premuto di un interruttore o selezionato di una casella di controllo
is_groupstring""Solo interruttore: gli interruttori di uno stesso gruppo della barra che condividono un nome sono esclusivi, come i pulsanti di allineamento di un editor — premerne uno rilascia gli altri (ue_toggled per quello che si accende, nulla per quelli rilasciati), premere quello già premuto lo lascia premuto. ib_checked = true dal codice rilascia anche gli altri, in silenzio. Una stringa vuota (predefinito) lascia il gruppo
ib_visiblebooleantruefalse nasconde il controllo; i vicini si compattano
is_textstring""Testo digitato o selezionato in una casella combinata
id_valuedouble0Valore numerico di un selettore numerico
id_mindouble0Solo selettore numerico: limite inferiore dell'intervallo, modificabile in qualsiasi momento. Il valore viene subito riportato nel nuovo intervallo, in silenzio (nessun ue_value_changed, come id_value scritto dal codice). Su qualsiasi altro controllo non ha effetto e si rilegge 0 — un minimo sopra il massimo porta con sé il massimo (vince il limite scritto, come in un NumericUpDown): i due limiti si impostano in qualsiasi ordine
id_maxdouble0Solo selettore numerico: limite superiore dell'intervallo, modificabile in qualsiasi momento; il valore viene riportato nell'intervallo in silenzio, come per id_min. Su qualsiasi altro controllo non ha effetto e si rilegge 0 — un massimo sotto il minimo porta con sé il minimo (vince il limite scritto)
id_stepdouble0Solo selettore numerico: passo delle frecce e dei tasti Su / Giù, modificabile in qualsiasi momento. Un passo di 0 o meno viene rifiutato: non cambia nulla, e of_get_last_error della barra dice perché. Su qualsiasi altro controllo non ha effetto e si rilegge 0
is_maskstring""Solo selettore numerico: la sua maschera di inserimento, una maschera numerica nella sintassi di PowerBuilder (EditMask, formato DataWindow): # una cifra facoltativa, 0 una cifra obbligatoria, , il raggruppamento, . il separatore decimale, % il numero mostrato moltiplicato per 100, letterali ($, un testo tra virgolette, \x) e sezioni positivo;negativo ("$#,##0;($#,##0)"). La virgola e il punto indicano i separatori della lingua di visualizzazione. Durante la digitazione il raggruppamento compare man mano che arrivano le cifre, i decimali sono limitati alla maschera, le lettere sono rifiutate, il cursore mantiene il suo posto tra le cifre e un numero incollato è letto nella lingua di visualizzazione; lasciando il campo la maschera completa (12 diventa 12,00). Il valore mantiene il numero come lo scrive il codice ("1234.5"), senza raggruppamento né simbolo. Un intervallo che parte da 0 o più rifiuta il segno meno; le frecce mantengono la maschera; id_value e ue_value_changed mantengono il numero nudo; la maschera segue il selettore nel pannello di un gruppo compresso. Vuoto (predefinito): il campo si digita secondo il suo is_format privato dei letterali ($#,##0.00 si digita #,##0.00, #,##0 "px" si digita #,##0; un % resta, è una scala), altrimenti il numero così com'è. Su qualsiasi altro controllo non ha effetto e si rilegge vuoto
is_formatstring""Solo selettore numerico: il suo formato di visualizzazione, come il numero si mostra quando il campo non ha la tastiera — stessa sintassi di is_mask, con i suoi letterali: 0 "pt" mostra 11 pt, 0% un tasso. Quando il campo prende la tastiera il suo testo diventa quello di is_mask (11), il cursore mantiene il suo posto tra le cifre; lasciandolo torna il testo di visualizzazione. Il passaggio non cambia mai il valore e non solleva nulla: id_value e ue_value_changed mantengono il numero nudo; il formato segue il selettore nel pannello di un gruppo compresso. Vuoto (predefinito): il selettore mostra il suo is_mask. Su qualsiasi altro controllo non ha effetto e si rilegge vuoto
il_colorlong-1Colore corrente di un selettore di colore
ii_visible_itemsinteger3Solo raccolta: numero di riquadri che la striscia compressa mostra in una volta. Gli altri restano raggiungibili tramite le frecce, oppure nella griglia espansa
is_keytipstring""Tasto di accesso rapido del controllo, mostrato dopo Alt e la lettera della scheda. Una lettera o più ("FP", come in Office), digitate una dopo l'altra; Backspace riprende l'ultima. Solo lettere A-Z e cifre: qualsiasi altro carattere è rifiutato — non cambia nulla, e of_get_last_error della barra dice perché. Un pulsante della barra di accesso rapido riceve la sua lettera insieme alle schede, al primo livello. Un controllo di un gruppo ridotto conserva il suo tasto: apre il pannello del gruppo
is_tooltipstring""Tooltip semplice mostrato al passaggio del mouse sull'item
is_super_tooltip_titlestring""Titolo del tooltip avanzato dell'item (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del tooltip avanzato dell'item (markup avanzato accettato)
is_super_tooltip_imagestring""Immagine del tooltip avanzato dell'item
il_accentlong-1Colore d'accento di questo controllo (-1 = quello del tema)
il_back_colorlong-1Sfondo di questo controllo, a riposo
il_text_colorlong-1Colore del testo di questo controllo
il_back_color_hoverlong-1Sfondo di questo controllo sotto il puntatore
il_text_color_hoverlong-1Colore del testo di questo controllo sotto il puntatore

Proprietà di una voce di menu — n_pbt_ribbon_menu_item #

Ottenute tramite of_menu_item("tab/group/control/entry").

ProprietàTipoPredefinitoRuolo
is_imagestring""Immagine della voce di menu. Una stringa vuota la toglie
of_is_separator ( ) → boolean——La voce è una linea di separazione? Sola lettura: cosa una voce è è stato deciso all'aggiunta
of_is_header ( ) → boolean——La voce è un titolo non cliccabile? Sola lettura, stessa ragione
of_is_checkable ( ) → boolean——La voce porta un segno di spunta? Sola lettura; ib_checked dice se è messo
ib_enabledbooleantruefalse disattiva la voce
ib_visiblebooleantruefalse toglie la voce dal menu alla sua prossima apertura — cascata compresa — senza rimuoverla
ib_checkedbooleanfalseSegno di spunta di una voce creata con of_add_menu_check
is_groupstring""Rende la voce una voce radio: le voci di un gruppo sotto lo stesso genitore si escludono — sceglierne una (o ib_checked = true dal codice) la spunta e toglie la spunta alle altre, e un pallino rotondo sostituisce il segno di spunta. ue_menu_selected riporta ab_checked = true. Una stringa vuota (predefinito) la rende di nuovo una voce ordinaria
il_accentlong-1Colore d'accento di questa voce nel menu (-1 = quello del tema)
il_back_colorlong-1Sfondo di questa voce nel menu, a riposo
il_text_colorlong-1Colore del testo di questa voce nel menu
il_back_color_hoverlong-1Sfondo di questa voce nel menu sotto il puntatore
il_text_color_hoverlong-1Colore del testo di questa voce nel menu sotto il puntatore
is_tooltipstring""Conservato e riletto, ma una voce di menu non mostra alcun tooltip: il menu nativo non ne ha
is_super_tooltip_titlestring""Titolo del suo tooltip avanzato — conservato, non mostrato (vedi is_tooltip)
is_super_tooltip_textstring""Testo del suo tooltip avanzato — conservato, non mostrato
is_super_tooltip_imagestring""Immagine del suo tooltip avanzato — conservata, non mostrata

Proprietà di una voce del menu applicativo — n_pbt_ribbon_app_menu_item #

Ottenute tramite of_app_menu_item("recent/a.txt"). Si modificano al volo: il menu le recepisce alla sua prossima apertura.

ProprietàTipoPredefinitoRuolo
is_labelstring""Testo della voce
is_imagestring""Immagine della voce. Una stringa vuota la rimuove
ib_enabledbooleantruefalse disattiva la voce: mostrata, mai scelta — Salva quando non c'è nulla da salvare
ib_checkedbooleanfalseSegno di spunta davanti alla voce
ib_visiblebooleantruefalse toglie la voce dal menu alla sua prossima apertura — sottomenu compreso — senza eliminarla
of_is_separator ( ) → boolean——La voce è una linea di separazione? Sola lettura
of_keys_at (long al_index) → string——L'indirizzo della voce alla posizione al_index (da 1) sotto questa — o al primo livello per of_app_menu_item("") —, "" oltre la fine: l'indirizzo che of_app_menu_item e of_remove_app_menu_item ricevono
il_accentlong-1Colore d'accento di questa voce nel menu (-1 = quello del tema)
il_back_colorlong-1Sfondo di questa voce nel menu, a riposo
il_text_colorlong-1Colore del testo di questa voce nel menu
il_back_color_hoverlong-1Sfondo di questa voce nel menu sotto il puntatore
il_text_color_hoverlong-1Colore del testo di questa voce nel menu sotto il puntatore
is_tooltipstring""Conservato e riletto, ma una voce di menu non mostra alcun tooltip: il menu nativo non ne ha
is_super_tooltip_titlestring""Titolo del suo tooltip avanzato — conservato, non mostrato (vedi is_tooltip)
is_super_tooltip_textstring""Testo del suo tooltip avanzato — conservato, non mostrato
is_super_tooltip_imagestring""Immagine del suo tooltip avanzato — conservata, non mostrata

I dodici tipi di controlli #

Si aggiungono tutti all'indirizzo di un gruppo — "home/clipboard" — e restituiscono 0 (-5 per un argomento non valido, -2 se il componente non è creato); un menu o un elenco si riempie poi all'indirizzo del controllo.

Metodo del componenteControllo ottenutoEvent
of_add_big_button (string as_keys, string as_label, string as_image) → longPulsante grande a tutta altezza, icona sopra l'etichetta. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_clicked
of_add_big_split (string as_keys, string as_label, string as_image) → longPulsante grande diviso: la parte superiore agisce, la freccia apre il menu. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_clicked · ue_menu_selected
of_add_big_dropdown (string as_keys, string as_label, string as_image) → longPulsante grande con menu a discesa. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_menu_selected
of_add_button (string as_keys, string as_label, string as_image) → longPulsante piccolo (impilato in colonne da tre). Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_clicked
of_add_toggle (string as_keys, string as_label, string as_image) → longPiccolo interruttore che rimane premuto. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_toggled
of_add_dropdown (string as_keys, string as_label, string as_image) → longPulsante piccolo con menu a discesa. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_menu_selected
of_add_checkbox (string as_keys, string as_label) → longCasella di controllo. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_toggled
of_add_separator (string as_keys) → longSeparatore verticale tra due blocchi di controlli. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato—
of_add_combo (string as_keys, integer ai_width_px, boolean ab_editable) → longCasella combinata, modificabile o meno. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_combo_changed
of_add_spinner (string as_keys, integer ai_width_px, double ad_min, double ad_max, double ad_step, double ad_value) → longSelettore numerico con frecce. Un valore fuori intervallo vi viene riportato. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato, un passo di 0 o meno, un minimo sopra il massimo), -2 se il componente non è creatoue_value_changed
of_add_colorpicker (string as_keys, string as_label, string as_image, long al_color) → longPulsante di colore diviso: il clic riapplica, la freccia apre la tavolozza di campioni. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_clicked · ue_color_changed
of_add_gallery (string as_keys, integer ai_width_px, integer ai_tile_w, integer ai_tile_h) → longStriscia scorrevole di piastrelle illustrate. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creatoue_gallery_selection_changed

of_add_colorpicker accetta un quinto argomento as_mode: COLORMODE_PALETTE (tavolozza di campioni) o COLORMODE_OPEN (tavolozza completa con i pulsanti OK e Annulla).


Metodi #

Costruire la barra multifunzione #

MetodoRuolo
of_add_tab (string as_key, string as_title)Aggiunge una scheda e restituisce 0 (-5 per un argomento non valido, -2 se il componente non è creato): i gruppi si aggiungono poi al suo indirizzo
of_insert_tab (string as_key, string as_title, integer ai_index)Aggiunge una scheda nella posizione che sceglie lei (1 = in testa) invece che in fondo, e restituisce 0 (-5 per un argomento non valido, -2 se il componente non è creato) come of_add_tab. Un id già assegnato viene rifiutato
of_tab (string as_key)Handle di una scheda esistente (creata al primo accesso)
of_add_group (string as_keys, string as_title)Aggiunge un gruppo intitolato a una scheda — "home/clipboard" — e restituisce 0 (-5 per un argomento non valido, -2 se il componente non è creato)
of_group (string as_keys)Handle di un gruppo esistente, tramite il suo indirizzo
of_item (string as_keys)Handle di un controllo esistente, tramite il suo indirizzo — "home/clipboard/paste"
of_select_tab (string as_key)Attiva una scheda, come un clic su di essa: segue ue_selection_changed (subito dopo il suo script, dalla coda degli eventi; nulla quando la scheda è già attiva), e of_selected_key la rilegge subito. A differenza di un clic, non espande una barra ridotta. Restituisce 0 una volta applicato, -5 per una scheda sconosciuta o nascosta, -2 se il componente non è creato
of_selected_key ( )Chiave della scheda attiva, "" se nessuna. Letta in diretta dal componente: già da ue_selection_changed, o subito dopo of_select_tab, indica la nuova scheda
of_remove_group (string as_keys)Rimuove un gruppo e tutti i suoi controlli, tramite il suo indirizzo; gli handle di ciò che se ne va sono liberati. Restituisce 0 una volta applicato, -5 quando nessun gruppo vive a quell'indirizzo, -2 se il componente non è creato
of_remove_item (string as_keys)Rimuove un controllo tramite il suo indirizzo (scheda/gruppo/controllo), oppure un pulsante della barra di accesso rapido tramite la sola chiave; il suo handle è liberato. Restituisce 0 una volta applicato, -5 quando nulla del genere vive a quell'indirizzo, -2 se il componente non è creato
of_remove_tab (string as_key)Rimuove una scheda e tutto il suo contenuto; gli handle di ciò che se ne va sono liberati. Restituisce 0 una volta applicato, -5 quando nessuna scheda porta quella chiave, -2 se il componente non è creato
of_clear ( )Svuota completamente la barra multifunzione: schede, gruppi, controlli, barra di accesso rapido, menu applicativo. Restituisce 0 una volta applicato, -2 se il componente non è creato

Riempire i menu e gli elenchi #

Tutti questi metodi si richiamano sul componente, con l'indirizzo del controllo (scheda/gruppo/controllo) — la voce, la scelta o il riquadro come quarto livello.

MetodoRuolo
of_add_menu_item (string as_keys, string as_label, string as_image)Voce del menu di un pulsante a discesa o diviso: scheda/gruppo/controllo/voce, un livello in più per ogni cascata. Restituisce 0 una volta applicato, -5 per un indirizzo errato, un genitore che non è né un menu a discesa né una voce, o una chiave già presa in quel menu, -2 se il componente non è creato
of_add_menu_check (string as_keys, string as_label) · (string as_keys, string as_label, string as_image)Voce selezionabile: il clic ne inverte lo stato e lo riporta in ue_menu_selected. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_add_menu_header (string as_keys, string as_label)Riga di titolo non cliccabile, per suddividere un menu lungo. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_add_menu_separator (string as_keys)Riga di separazione in un menu: as_keys indica il controllo per il suo menu, oppure una voce per la cascata sotto di essa. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_remove_menu_item (string as_keys)Rimuove una voce di un menu, con la sua cascata (scheda/gruppo/controllo/voce, più in profondità per una voce in cascata); i suoi handle sono liberati. Restituisce 0 una volta applicato, -5 quando nessuna voce vive a quell'indirizzo, -2 se il componente non è creato
of_clear_menu (string as_keys)Svuota il menu di un pulsante a discesa o diviso (scheda/gruppo/controllo): un elenco «File recenti» si ricostruisce voce per voce, senza ricreare il controllo. Restituisce 0 una volta applicato, -5 quando l'indirizzo non è né un menu a discesa né un pulsante diviso, -2 se il componente non è creato
of_menu_item (string as_keys)Handle di una voce di menu, per disattivarla o selezionarla a caldo
of_add_combo_item (string as_keys, string as_label)Aggiunge una scelta all'elenco di una casella combinata; una scelta ha come chiave la sua etichetta. Restituisce 0 una volta applicato, -5 quando l'indirizzo non è una casella combinata, o per un'etichetta già nell'elenco, vuota, o che contiene / o una barra verticale, -2 se il componente non è creato
of_remove_combo_item (string as_keys)Rimuove una scelta di una casella combinata: scheda/gruppo/elenco/etichetta. Restituisce 0 una volta applicato, -5 quando l'elenco non ha quella scelta, -2 se il componente non è creato
of_clear_combo (string as_keys)Svuota l'elenco di una casella combinata (scheda/gruppo/elenco); il suo testo resta. Restituisce 0 una volta applicato, -5 quando l'indirizzo non è una casella combinata, -2 se il componente non è creato
of_add_gallery_item (string as_keys, string as_image, string as_label)Aggiunge una tessera a una raccolta (scheda/gruppo/raccolta/tessera); la sua etichetta è anche il suo nome per un lettore di schermo. Restituisce 0 una volta applicato, -5 per un indirizzo errato, un terzo livello che non è una raccolta, o una tessera già presa, -2 se il componente non è creato
of_remove_gallery_item (string as_keys)Rimuove una tessera di una raccolta (scheda/gruppo/raccolta/tessera). Quando la tessera selezionata se ne va, non resta nulla di selezionato. Restituisce 0 una volta applicato, -5 quando quella tessera non esiste, -2 se il componente non è creato
of_select_gallery_item (string as_keys)Seleziona una tessera della raccolta da programma, tramite il suo indirizzo a quattro livelli, come una scelta: con ib_veto_gallery attivo, viene posto prima ue_gallery_selection_changing; poi segue ue_gallery_selection_changed. Tessera già selezionata: nulla viene chiesto né sollevato. Restituisce 0 una volta applicato (o se già selezionata), -4 se il suo ue_gallery_selection_changing ha rifiutato (la tessera resta), -5 per un'altra profondità o una tessera mai aggiunta da of_add_gallery_item, -2 se il componente non è creato
of_open (string as_keys)Apre da programma il menu, l'elenco o la tavolozza del controllo a quell'indirizzo (scheda/gruppo/controllo); l'indirizzo di un gruppo (scheda/gruppo) ne apre il pannello quando una finestra troppo stretta lo ha ridotto. Restituisce 0 una volta applicato, -5 per un indirizzo che non nomina né un controllo né un gruppo (un pulsante della barra di accesso rapido non ha un menu da aprire), -2 se il componente non è creato
MetodoRuolo
of_add_app_menu_item (string as_keys, string as_label, string as_image)Voce del menu applicativo (quello che apre il pulsante is_app_button), tramite il suo indirizzo: recent alla radice, recent/a.txt nel sottomenu di recent. Restituisce 0 una volta applicato, -5 per una chiave non valida (vuota, / o barra verticale in un livello, che inizia con __), una chiave già presa, una voce genitore sconosciuta, o senza pulsante applicativo, -2 se il componente non è creato
of_add_app_menu_separator (string as_keys)Linea di separazione nel menu applicativo. as_keys è il suo indirizzo, come quello di una voce: s1 alla radice, saveas/s1 nel sottomenu di saveas; un indirizzo vuoto riceve una chiave propria. Restituisce 0 una volta applicato, -5 per una chiave già presa, una voce genitore sconosciuta, o senza pulsante applicativo, -2 se il componente non è creato
of_remove_app_menu_item (string as_keys)Rimuove una voce (o linea di separazione) del menu applicativo tramite il suo indirizzo, con il suo sottomenu; i suoi handle sono liberati. Restituisce 0 una volta applicato, -5 quando quella voce non esiste, -2 se il componente non è creato
of_app_menu_item (string as_keys)Handle di una voce del menu applicativo (save, recent/a.txt), per disattivarla, spuntarla, nasconderla o rinominarla al volo — vedere sotto. of_app_menu_item("") rappresenta il menu stesso: of_count e of_keys_at ne percorrono il primo livello
of_add_qat (string as_key, string as_image, string as_tooltip)Pulsante della barra di accesso rapido, sopra le schede; il suo tooltip è anche il suo nome per un lettore di schermo. Restituisce 0 una volta applicato, -5 per una chiave non valida (vuota, / o barra verticale in un livello, che inizia con __) o una chiave già nella barra, -2 se il componente non è creato
of_qat_item (string as_key)Handle di un pulsante di accesso rapido, per disattivarlo o nasconderlo a caldo

Schede contestuali #

MetodoRuolo
of_add_contextual_tab (string as_key, string as_title, long al_color)Scheda contestuale isolata: creata nascosta, contrassegnata da un filetto colorato. Passate ACCENT_LIGHT per seguire l'accento del tema. Restituisce 0 una volta applicato, -5 per una chiave non valida (vuota, / o barra verticale in un livello, che inizia con __) o una chiave già presa, -2 se il componente non è creato
of_add_contextual_group (string as_key, string as_title) · (string as_key, string as_title, long al_color)Gruppo di schede contestuali: una fascia colorata con titolo corona le sue schede. Restituisce 0 una volta applicato, -5 per una chiave non valida (vuota, / o barra verticale in un livello, che inizia con __) o una chiave già presa (il suo colore cambia tramite of_ctx_group(chiave).il_color), -2 se il componente non è creato
of_ctx_group (string as_key)Recupera l'handle di un gruppo contestuale già creato, tramite la sua chiave — è su di esso che si impostano le sue proprietà
of_remove_contextual_group (string as_key)Rimuove un gruppo di schede contestuali e le schede che corona — gli appartengono; i loro handle sono liberati. Restituisce 0 una volta applicato, -5 quando of_add_contextual_group non ha mai creato quel gruppo, -2 se il componente non è creato
of_add_contextual_tab (string as_key, string as_title, string as_group_key)Aggiunge una scheda sotto un gruppo contestuale: creata nascosta, coronata dalla fascia colorata del gruppo. Restituisce 0 una volta applicato, -5 per una chiave non valida o già presa, o un gruppo mai creato da of_add_contextual_group, -2 se il componente non è creato
il_color (proprietà)Su un handle di gruppo contestuale: ricolora il banner a caldo (ACCENT_LIGHT per tornare al colore d'accento)
is_title (proprietà)Su un handle di gruppo contestuale: rinomina il banner a caldo (un cambio di lingua); il suo colore resta. Il suo tooltip (is_tooltip, is_super_tooltip_*) appare quando il puntatore si ferma sul banner, e un clic sul banner porta in primo piano la sua prima scheda

Comuni #

MetodoRuolo
of_reset ( )Svuota la barra multifunzione e la riporta allo stato iniziale, proprietà comprese. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_set_redraw (boolean)Raggruppa una raffica di modifiche in un unico rendering. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_preload_icons (string as_icons[])Preriscalda un lotto di icone all'avvio: una scheda aperta più tardi mostra le proprie istantaneamente. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_save_as_png (string) · of_save_as_jpg (string)Esporta il rendering come immagine. Restituisce 0 una volta scritta l'immagine, -4 se la scrittura fallisce, -2 se il componente non è creato

Event #

Tutti gli event dei controlli portano con sé il percorso completo: non ha mai bisogno di un identificatore univoco in tutta l'applicazione.

EventAttivato quando
ue_clicked (string as_keys)L'utente clicca un pulsante, un pulsante grande, la parte principale di un pulsante diviso o un pulsante della barra di accesso rapido — nella barra, nel pannello di un gruppo ridotto, o tramite il suo tasto di accesso rapido. as_keys è l'indirizzo scheda/gruppo/controllo, o la sola chiave di un pulsante di accesso rapido
ue_toggled (string as_keys, boolean ab_checked)L'utente commuta un pulsante interruttore o una casella di controllo (nella barra o nel pannello di un gruppo ridotto); ab_checked porta il nuovo stato. Scrivere ib_checked dal codice non attiva nulla. Un interruttore di un gruppo radio (is_group) solleva un solo event, per quello che si accende; quelli rilasciati non sollevano nulla
ue_menu_selected (string as_keys, boolean ab_checked)L'utente sceglie una voce del menu di un pulsante a discesa o diviso. as_keys è il suo indirizzo completo: scheda, gruppo, controllo portatore, poi la voce — un livello in più per ogni cascata. Una voce spuntabile commuta prima, e ab_checked porta il suo nuovo stato. Una voce disattivata o nascosta non si sceglie. Una voce radio (is_group) si spunta e toglie la spunta alle altre del suo gruppo: ab_checked vale allora true
ue_combo_changed (string as_keys, string as_text)L'utente conferma il testo di una casella combinata: una scelta nel suo elenco, Invio nel campo, o l'uscita dal campo dopo una digitazione. Esc abbandona la digitazione senza attivare nulla; scrivere is_text dal codice non attiva nulla neppure. Un testo scritto dal codice mentre il campo ha il focus appare subito — a meno che l'utente stia digitando: vince la sua digitazione; lasciare il campo senza aver digitato non solleva nulla
ue_value_changed (string as_keys, double ad_value)L'utente cambia il valore di un contatore: le sue frecce, Su / Giù nel campo, Invio o l'uscita dal campo dopo una digitazione (Esc la abbandona). ad_value è il nuovo valore, contenuto nell'intervallo del contatore. Scrivere id_value dal codice non attiva nulla. Un valore scritto dal codice mentre il campo ha il focus appare subito — a meno che l'utente stia digitando: vince la sua digitazione; lasciare il campo senza aver digitato non solleva nulla
ue_color_changed (string as_keys, long al_color)L'utente sceglie un colore (tavolozza o selettore), oppure clicca la parte principale di un selettore di colore per riapplicarne il colore corrente; al_color è il colore PowerBuilder. Scrivere il_color dal codice non attiva nulla
ue_gallery_selection_changed (string as_from_keys, string as_keys)Una piastrella di galleria è stata scelta — dall'utente o da of_select_gallery_item (anche un ordine del suo codice lo solleva). Stessi argomenti di ue_gallery_selection_changing: la domanda e il suo esito si leggono allo stesso modo, e as_from_keys è la piastrella lasciata
ue_gallery_selection_changing (string as_from_keys, string as_keys) → booleanAnnullabile, posto prima che la piastrella venga scelta. Sollevato solo quando ib_veto_gallery = true. as_from_keys è la piastrella corrente. Posto anche per of_select_gallery_item. Restituisca false per conservarla (uno stile che il documento non può ancora assumere): of_select_gallery_item restituisce allora -4
ue_launcher (string as_keys)L'utente clicca la freccia di avvio di un gruppo (anche dal pannello di un gruppo ridotto): as_keys è l'indirizzo del gruppo scheda/gruppo — aprite la vostra finestra delle opzioni
ue_selection_changed (string as_keys)Un'altra scheda passa in primo piano: un clic, la rotellina sopra la barra, un tasto di accesso rapido, oppure of_select_tab (anche un ordine del suo codice lo solleva). as_keys è la chiave della scheda — vuota quando non ne resta nessuna, dopo che la scheda attiva è stata nascosta o rimossa
ue_app_button ( )Si fa clic sul pulsante applicativo
ue_app_menu_selected (string as_keys)L'utente sceglie una voce del menu applicativo: as_keys è il suo indirizzo (saveas/as_pdf). Una voce disattivata o nascosta non si sceglie
ue_item_rclicked (string as_keys, long al_x, long al_y)L'utente fa clic destro su un item: as_keys è l'indirizzo del controllo (scheda/gruppo/controllo), del gruppo (scheda/gruppo) o della scheda, o la sola chiave di un pulsante della barra di accesso rapido — come li fornisce ue_clicked; al_x, al_y: il punto del clic in pixel dello schermo (tasto Menu o Maiusc+F10: l'angolo in basso a sinistra dell'item), dove un contextmenu della libreria si apre così com'è. Un solo event per clic destro: ue_rclicked non viene sollevato con esso. Un controllo disattivato non solleva nulla. Aprite lì il vostro menu: Aggiungi alla barra di accesso rapido, un aiuto sul comando
ue_rclicked ( )L'utente fa clic destro sulla barra fuori da ogni item: l'estremità vuota della riga delle schede, una fascia senza nulla
ue_minimized (boolean ab_minimized)La barra si riduce o si espande: il chevron alla fine della riga delle schede, un doppio clic su una scheda, oppure ib_minimized impostato dal suo codice (anche un ordine lo attiva); ue_size_changed comunica la nuova altezza in ogni caso
ue_size_changed (long al_height, boolean ab_minimized)L'altezza della barra multifunzione è cambiata da sola: ridotta, espansa, una scheda contestuale mostrata, una finestra più stretta che perde una riga. A differenza di ue_auto_height — che parla solo quando il componente si ridimensiona da sé — questo si attiva sia che l'altezza automatica sia attiva o no: è pura informazione, per ricollocare ciò che sta sotto
ue_keytips (boolean ab_on, integer ai_level)I keytip compaiono (true) o scompaiono (false). ai_level indica a che punto è la navigazione: 1 = le schede sono lettrate, 2 = lo sono i comandi della scheda corrente, 0 = nessun keytip
ue_auto_height (long al_height)La barra multifunzione comunica la propria altezza ideale e vi si è appena adattata — sempre attivo: l'altezza di una barra multifunzione è intrinseca
ue_ready ( )Il componente ha terminato il caricamento; tutto ciò che è stato inviato prima è stato riprodotto
ue_runtime_missing ( )Il runtime WebView2 è assente: il componente resta vuoto
ue_bg_color (long al_color)Il componente ha calcolato il colore di sfondo del proprio tema; l'userobject lo ha già adottato (backcolor)

Esempi #

Una barra multifunzione completa, dal menu applicativo ai gruppi #

// event open : si raggruppa tutta la costruzione in un unico rendering

// Sospendere il disegno e dare un nome al pulsante dell'applicazione
uo_ribbon.of_set_redraw(/*on*/ false)
uo_ribbon.is_app_button = "File"

// Menu applicativo, con una cascata sotto "Salva con nome"
uo_ribbon.of_add_app_menu_item(/*keys*/ "new", /*label*/ "Nuovo", /*image*/ "mono:img\new.svg")
uo_ribbon.of_add_app_menu_item(/*keys*/ "open", /*label*/ "Apri...", /*image*/ "mono:img\open.svg")
uo_ribbon.of_add_app_menu_item(/*keys*/ "save_as", /*label*/ "Salva con nome", /*image*/ "mono:img\saveas.svg")
uo_ribbon.of_add_app_menu_item(/*keys*/ "save_as/as_pdf", /*label*/ "Documento PDF", /*image*/ "")
uo_ribbon.of_add_app_menu_item(/*keys*/ "save_as/as_csv", /*label*/ "File CSV", /*image*/ "")
uo_ribbon.of_add_app_menu_separator(/*keys*/ "sep1")
uo_ribbon.of_add_app_menu_item(/*keys*/ "quit", /*label*/ "Esci", /*image*/ "mono:img\exit.svg")

// Barra di accesso rapido, sopra le schede
uo_ribbon.of_add_qat(/*key*/ "qat_save", /*image*/ "mono:img\save.svg", /*tooltip*/ "Salva")
uo_ribbon.of_add_qat(/*key*/ "qat_undo", /*image*/ "mono:img\undo.svg", /*tooltip*/ "Annulla")

// Scheda Home
uo_ribbon.of_add_tab(/*key*/ "home", /*title*/ "Home")
uo_ribbon.of_tab(/*key*/ "home").is_keytip = "H"

// Un gruppo: un pulsante diviso con il suo menu, poi due pulsanti piccoli
uo_ribbon.of_add_group(/*keys*/ "home/clipboard", /*title*/ "Appunti")
uo_ribbon.of_add_big_split(/*keys*/ "home/clipboard/paste", /*label*/ "Incolla", /*image*/ "mono:img\paste.svg")
uo_ribbon.of_add_menu_item(/*keys*/ "home/clipboard/paste/paste_text", /*label*/ "Incolla senza formattazione", /*image*/ "")
uo_ribbon.of_add_menu_item(/*keys*/ "home/clipboard/paste/paste_link", /*label*/ "Incolla come collegamento", /*image*/ "")
uo_ribbon.of_add_button(/*keys*/ "home/clipboard/cut", /*label*/ "Taglia", /*image*/ "mono:img\cut.svg")
uo_ribbon.of_add_button(/*keys*/ "home/clipboard/copy", /*label*/ "Copia", /*image*/ "mono:img\copy.svg")
uo_ribbon.of_group(/*keys*/ "home/clipboard").ib_launcher = true       // freccia delle opzioni in basso a destra

// Disegnare tutto in una volta, poi mostrare la scheda
uo_ribbon.of_set_redraw(/*on*/ true)
uo_ribbon.of_select_tab(/*key*/ "home")

Un unico smistamento dei clic #

// event ue_clicked di uo_ribbon : (string as_keys)
// L'indirizzo completo arriva con l'event : basta un solo smistamento.
// Due gruppi possono riusare la stessa chiave : l'indirizzo li distingue.
choose case as_keys
    case "home/clipboard/cut" ; of_cut()
    case "home/clipboard/copy" ; of_copy()
    case "home/clipboard/paste" ; of_paste()
    case "home/font/bold" ; of_toggle_bold()
end choose

Pilotare lo stato dei controlli in base ai diritti #

// Sempre attraverso il percorso : scheda > gruppo > controllo
uo_ribbon.of_item(/*keys*/ "home/clipboard/paste").ib_enabled = of_clipboard_has_data()
uo_ribbon.of_item(/*keys*/ "home/tools/brush").ib_checked = true
uo_ribbon.of_tab(/*key*/ "admin").ib_visible = gb_administrator

// Disattivare una voce DENTRO un menu a discesa (livello 4)
uo_ribbon.of_menu_item(/*keys*/ "home/clipboard/paste/paste_link").ib_enabled = false

Interruttori esclusivi e voci radio #

// I tre interruttori di allineamento del gruppo Paragrafo si escludono
uo_ribbon.of_add_group(/*keys*/ "home/para", /*title*/ "Paragrafo")
uo_ribbon.of_add_toggle(/*keys*/ "home/para/left", /*label*/ "Sinistra", /*image*/ "mono:img\align-left.svg")
uo_ribbon.of_add_toggle(/*keys*/ "home/para/center", /*label*/ "Centro", /*image*/ "mono:img\align-center.svg")
uo_ribbon.of_add_toggle(/*keys*/ "home/para/right", /*label*/ "Destra", /*image*/ "mono:img\align-right.svg")
uo_ribbon.of_item(/*keys*/ "home/para/left").is_group = "align"
uo_ribbon.of_item(/*keys*/ "home/para/center").is_group = "align"
uo_ribbon.of_item(/*keys*/ "home/para/right").is_group = "align"

// Il testo parte allineato a sinistra : gli altri si rilasciano da soli, in silenzio
uo_ribbon.of_item(/*keys*/ "home/para/left").ib_checked = true

// Due voci radio nel menu del pulsante Incolla : una alla volta
uo_ribbon.of_menu_item(/*keys*/ "home/clipboard/paste/paste_text").is_group = "paste_mode"
uo_ribbon.of_menu_item(/*keys*/ "home/clipboard/paste/paste_link").is_group = "paste_mode"

Un vostro menu con un clic destro #

// event ue_item_rclicked di uo_ribbon : (string as_keys, long al_x, long al_y)
// Local variables
m_ribbon_context lm_menu

// Il comando cliccato e conservato per i Clicked del menu (una variabile di istanza)
is_rclicked_keys = as_keys

// Il vostro menu, al puntatore : Aggiungi alla barra di accesso rapido, Aiuto
lm_menu = create m_ribbon_context
lm_menu.m_main.PopMenu(parent.PointerX(), parent.PointerY())
destroy lm_menu

Schede contestuali con banner #

Il principio di Office: schede che compaiono solo quando la selezione le giustifica, sovrastate da un banner intitolato e colorato.

// event open : si prepara il gruppo contestuale, nascosto per impostazione predefinita

// Senza colore, il banner segue il colore d'accento del tema ; RGB(...) per imporlo
uo_ribbon.of_add_contextual_group(/*key*/ "img", /*title*/ "Strumenti immagine", &
                                           /*color*/ RGB(/*red*/ 224, /*green*/ 32, /*blue*/ 96))
uo_ribbon.of_add_contextual_tab(/*key*/ "format", /*title*/ "Formato", /*group_key*/ "img")
uo_ribbon.of_add_group(/*keys*/ "format/adjust", /*title*/ "Regola")
uo_ribbon.of_add_big_button(/*keys*/ "format/adjust/crop", /*label*/ "Ritaglia", /*image*/ "mono:img\crop.svg")
uo_ribbon.of_add_button(/*keys*/ "format/adjust/rotate", /*label*/ "Ruota", /*image*/ "mono:img\rotate.svg")
// Alla selezione di un'immagine : si rivela la scheda e la si attiva
uo_ribbon.of_tab(/*key*/ "format").ib_visible = true
uo_ribbon.of_select_tab(/*key*/ "format")
// Alla deselezione : la si nasconde, il banner sparisce con lei
uo_ribbon.of_tab(/*key*/ "format").ib_visible = false

Casella combinata, selettore numerico, selettore di colore e raccolta #


// Un nuovo gruppo nella scheda
uo_ribbon.of_add_group(/*keys*/ "home/font", /*title*/ "Carattere")

// Casella combinata modificabile : la si riempie tramite il suo handle
uo_ribbon.of_add_combo(/*keys*/ "home/font/font_name", /*width_px*/ 140, /*editable*/ true)
uo_ribbon.of_add_combo_item(/*keys*/ "home/font/font_name", /*label*/ "Segoe UI")
uo_ribbon.of_add_combo_item(/*keys*/ "home/font/font_name", /*label*/ "Arial")
uo_ribbon.of_add_combo_item(/*keys*/ "home/font/font_name", /*label*/ "Calibri")
uo_ribbon.of_item(/*keys*/ "home/font/font_name").is_text = "Segoe UI"

// Selettore numerico : minimo, massimo, passo, valore iniziale
uo_ribbon.of_add_spinner(/*keys*/ "home/font/size", /*width_px*/ 70, /*min*/ 6, /*max*/ 96, &
                          /*step*/ 1, /*value*/ 11)

// Selettore di colore in modalita tavolozza completa (con OK / Annulla)
uo_ribbon.of_add_colorpicker(/*keys*/ "home/font/color", /*label*/ "Colore", &
                              /*image*/ "mono:img\font-color.svg", &
                              /*color*/ RGB(/*red*/ 0, /*green*/ 0, /*blue*/ 0), &
                              /*mode*/ u_pbt_ribbon.COLORMODE_OPEN)

// Raccolta di stili : riquadri illustrati scorrevoli
uo_ribbon.of_add_gallery(/*keys*/ "home/font/styles", /*width_px*/ 220, &
                                     /*tile_w*/ 64, /*tile_h*/ 48)
uo_ribbon.of_add_gallery_item(/*keys*/ "home/font/styles/st_normal", /*image*/ "img\style-normal.png", /*label*/ "Normale")
uo_ribbon.of_add_gallery_item(/*keys*/ "home/font/styles/st_title",  /*image*/ "img\style-titre.png",  /*label*/ "Titolo")
uo_ribbon.of_add_gallery_item(/*keys*/ "home/font/styles/st_note",   /*image*/ "img\style-note.png",   /*label*/ "Nota")
uo_ribbon.of_add_gallery_item(/*keys*/ "home/font/styles/st_code",   /*image*/ "img\style-code.png",   /*label*/ "Codice")

// La striscia compressa mostra 4 riquadri alla volta ; gli altri restano
// raggiungibili tramite le frecce, oppure nella griglia espansa.
uo_ribbon.of_item(/*keys*/ "home/font/styles").ii_visible_items = 4

// Lo stile selezionato all'inizio
uo_ribbon.of_select_gallery_item(/*keys*/ "home/font/styles/st_normal")
// event ue_value_changed di uo_ribbon : (string as_keys, double ad_value)
// Local variables
n_pbt_utils lnv_utils   // autoinstantiate : niente da creare, niente da distruggere

// L'ultimo livello dell'indirizzo indica il selettore che si e mosso
if lnv_utils.of_leaf(/*keys*/ as_keys) = "size" then of_apply_size(ad_value)

L'intervallo e il passo di un selettore numerico si cambiano in seguito tramite id_min, id_max e id_step del suo handle: il valore viene subito riportato nel nuovo intervallo, senza attivare ue_value_changed. La sua immagine, come quella di ogni controllo, si cambia tramite is_image.

// La dimensione massima dipende dal carattere scelto : 96, poi 400 a passi di 2
uo_ribbon.of_item(/*keys*/ "home/font/size").id_max = 400
uo_ribbon.of_item(/*keys*/ "home/font/size").id_step = 2
// event ue_color_changed di uo_ribbon : (string as_keys, long al_color)
// Local variables
n_pbt_utils lnv_utils   // autoinstantiate : niente da creare, niente da distruggere

// L'ultimo livello dell'indirizzo indica il selettore di colore cambiato
if lnv_utils.of_leaf(/*keys*/ as_keys) = "color" then of_apply_color(al_color)

Rifiutare la scelta di un riquadro di raccolta #

// La domanda e posta solo su richiesta: questa riga la attiva, e
// ue_gallery_selection_changing decide allora di ogni piastrella.
uo_ribbon.ib_veto_gallery = true
// event ue_gallery_selection_changing di uo_ribbon :
//   (string as_from_keys, string as_keys)
// Local variables
n_pbt_utils lnv_utils   // autoinstantiate : niente da creare, niente da distruggere

// Restituire FALSE conserva il riquadro corrente (as_from_keys).
if lnv_utils.of_leaf(/*keys*/ as_keys) = "st_code" and not of_document_supports_code() then
    MessageBox("Stile", "Questo documento non può assumere lo stile Codice.")
    return false
end if
return true
// La piccola freccia in basso a destra nel gruppo
uo_ribbon.of_group(/*keys*/ "home/font").ib_launcher = true
// event ue_launcher di uo_ribbon : (string as_keys)
// Local variables
n_pbt_utils lnv_utils   // autoinstantiate : niente da creare, niente da distruggere

// Il percorso identifica il gruppo : si apre la finestra delle opzioni corrispondente.
choose case lnv_utils.of_leaf(/*keys*/ as_keys)
    case "font"        ; open(w_font_options)
    case "clipboard" ; open(w_paste_options)
end choose

Keytip: guidare la barra multifunzione da tastiera #

// Alt mostra le lettere ; Alt poi H poi C attiva "copy"
uo_ribbon.of_tab(/*key*/ "home").is_keytip = "H"
uo_ribbon.of_item(/*keys*/ "home/clipboard/copy").is_keytip = "C"
uo_ribbon.of_item(/*keys*/ "home/clipboard/cut").is_keytip = "X"

Una pressione di Alt ovunque si trovi il focus nella finestra passa la mano alla barra multifunzione: prende il focus da tastiera e mostra le proprie lettere. Non c'è nulla da collegare: basta che sia dichiarato almeno un keytip. Esc, un secondo Alt o la scelta di un comando restituiscono il focus al controllo che l'utente aveva abbandonato. Un tasto può avere più lettere ("FP", come in Office): l'utente le digita una dopo l'altra, i badge che non iniziano più con quanto digitato si fanno da parte, e Backspace li riporta. Un controllo di un gruppo ridotto conserva il suo tasto: apre il pannello del gruppo. Esc risale di un livello, come in Office: dai comandi di una scheda alle schede, poi fuori. I pulsanti della barra di accesso rapido ricevono la loro lettera insieme alle schede (of_qat_item(chiave).is_keytip).

ue_keytips la avvisa a ogni cambiamento di stato e le comunica il livello corrente:

// event ue_keytips di uo_ribbon : (boolean ab_on, integer ai_level)
// La tastiera pilota la barra multifunzione: cancellare il suggerimento della
// barra di stato, che parla del mouse, e ripristinarlo quando le lettere spariscono.
if ab_on then
    uo_statusbar.of_item(/*keys*/ "main").is_text = "Digiti una lettera (livello " + String(ai_level) + ")"
else
    uo_statusbar.of_item(/*keys*/ "main").is_text = ""
end if

Tooltip avanzati su un controllo #

// Local variables
n_pbt_ribbon_item lnv_item

// Il super tooltip del pulsante Incolla: un titolo, un testo, un'immagine
lnv_item = uo_ribbon.of_item(/*keys*/ "home/clipboard/paste")
lnv_item.is_super_tooltip_title = "Incolla (Ctrl+V)"
lnv_item.is_super_tooltip_text  = "Inserisce il contenuto degli appunti." &
                                + "[br][br][size-=15]Usi la freccia per incollare senza formattazione.[/size-=15]"
lnv_item.is_super_tooltip_image = "img\paste.png"

Queste quattro proprietà sono esattamente le stesse di qualsiasi altro item della libreria. Per un tooltip su una sola riga basta is_tooltip.

Altezza automatica #

La barra multifunzione si dimensiona da sola: non c'è nulla da attivare. La avvisa a ogni cambiamento di altezza (compressione, scheda contestuale, cambio di tema) affinché Lei possa riposizionare ciò che si trova al di sotto.

// event ue_auto_height di uo_ribbon : (long al_height)
// La barra multifunzione si e gia ridimensionata : si riposiziona cio che sta sotto.
uo_content.y      = uo_ribbon.y + uo_ribbon.height
uo_content.height = this.height - uo_content.y

Ridurre la barra multifunzione per guadagnare spazio #

// Start with the ribbon folded: only the tab headers show
uo_ribbon.ib_minimized = true
// event ue_minimized di uo_ribbon : (boolean ab_minimized)
// Si memorizza la preferenza dell'utente per la prossima apertura.
of_save_preference("ribbon_collapsed", ab_minimized)

Ripartire da una barra multifunzione vuota #

// of_reset svuota schede, gruppi, controlli, barra di accesso rapido e menu
uo_ribbon.of_reset()
uo_ribbon.of_add_tab(/*key*/ "home", /*title*/ "Home")

Da un menu PowerBuilder esistente #

Un'applicazione PowerBuilder ha già descritto i suoi comandi una volta: nel suo menu. Etichette, scorciatoie, immagini, separatori, sottomenu, suggerimenti — c'è tutto. n_pbt_menu2ribbon rilegge quel menu tramite RTTI e scrive il PowerScript che costruisce la barra multifunzione corrispondente.

// Una sola volta, a mano : il generatore SCRIVE del codice, non viene eseguito
// in produzione. Incollate il risultato nell'open della vostra finestra.
// Local variables
n_pbt_menu2ribbon lnv_gen
string ls_code

// Generare il codice dal menu
lnv_gen = create n_pbt_menu2ribbon
ls_code = lnv_gen.of_generate(/*menu*/ m_principal, /*ribbon_var*/ "uo_ribbon")
destroy lnv_gen

// Copiarlo, pronto da incollare
ClipBoard(ls_code)

La conversione è deterministica: nessuna IA, nessuna chiamata di rete, niente che esca dalla postazione. Ogni chiave generata è il ClassName della voce di menu (m_fichier, m_ouvrir): l'indirizzo che la barra multifunzione riporta (m_fichier/g1/m_ouvrir) riconduce quindi alla voce, e il router scritto alla fine del codice ne scatena il Clicked da ue_clicked, ue_toggled e ue_menu_selected - il vostro codice esistente viene eseguito tale e quale. I sottomenu sono ripresi a qualsiasi profondità, una voce nascosta viene esclusa, una disattivata resta disattivata, una spuntata diventa un interruttore o una voce spuntabile che parte spuntata.

Il codice prodotto è un punto di partenza da rileggere, non un risultato finito: un menu è un elenco, una barra multifunzione è un'impaginazione. Raggruppate, scegliete i pulsanti grandi, togliete ciò che non merita di stare sempre in vista. L'esempio 9 della pagina barra multifunzione dell'applicazione dimostrativa mostra un risultato completo.


Buone pratiche #

Ereditato dalla base comune #

Questi membri esistono su tutti i componenti visivi — non sono propri di questo. Sono descritti una sola volta, nei capitoli trasversali; questa tabella dice solo dove leggerli.

MembriRuoloDescritto in
of_count · of_keys_at · of_hasPercorrere ciò che il componente contiene3.2 Gli item
of_resetRiportare il componente a zero3.6 Riportare un componente a zero: of_reset()
of_register_shortcut · of_clear_shortcutsScorciatoie da tastiera del componente3.5 Le scorciatoie da tastiera
of_is_created · of_is_ready · of_get_last_errorSe è nato, se è pronto, cosa è fallito3.7 Diagnostica
of_save_as_png · of_save_as_jpgEsportare il rendering in immagine3.8 Esportare il rendering come immagine
of_set_redrawRaggruppare le modifiche in un solo ridisegno3.10 Buone pratiche
of_preload_iconsIcone mostrate senza ritardoVisualizzazione istantanea: of_icon
of_set_translationTradurre una dicitura del componente5.2 Adattare un'etichetta: of_set_translation
of_focus_webviewDare il focus al componente6.4 Tastiera e focus
of_print · of_print_to_pdfStampare, o scrivere un PDF6.9 Stampare
of_set_property · of_get_property · of_component_namePilotare una proprietà per nome3.1 Il motore delle proprietà
is_accessible_name · is_accessible_descriptionIl nome e la descrizione che dice un lettore di schermo3.4 Proprietà ed event opzionali

Due aiuti non sono ereditati: of_icon e of_escape_markup vivono su n_pbt_utils. Ne dichiari uno — n_pbt_utils lnv_utils, niente da creare — e li chiami su di esso.


← Riferimento dei componenti · Sommario della guida