listbar — u_pbt_listbar #
← Riferimento dei componenti · Sommario della guida
Barra di navigazione laterale: sezioni comprimibili a fisarmonica che contengono voci con icona, con banda d'accento sulla voce corrente e compressione in una barra di sole icone.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Listbar: l'anteprima, il codice che lo produce e questa pagina, affiancati.
In breve #
| Userobject | u_pbt_listbar |
| Classi degli item | n_pbt_listbar_section (sezione) → n_pbt_listbar_item (voce) |
| Serve per | Sostituire un menu laterale improvvisato a colpi di pulsanti con una navigazione strutturata, a tema e comprimibile |
| Opzioni opt-in | ib_auto_width, ib_reorderable |
È l'unico componente della libreria a pubblicare ib_auto_width: la sua larghezza naturale ha un senso, poiché la barra compressa è nettamente più stretta di quella espansa. Del resto il caso più comune è già coperto senza attivare nulla: ib_collapsed = true restringe la barra alla sola striscia di icone, e le restituisce la larghezza quando viene espansa.
Avvio rapido #
// evento open della finestra
// Una sezione, poi le sue voci : ogni voce si indirizza con sezione/voce
uo_nav.of_add_section(/*key*/ "nav", /*text*/ "Navigation")
uo_nav.of_add_item(/*keys*/ "nav/home", /*text*/ "Home", /*image*/ "mono:img\home.svg")
uo_nav.of_add_item(/*keys*/ "nav/docs", /*text*/ "Documents", /*image*/ "mono:img\doc.svg")
uo_nav.of_add_item(/*keys*/ "nav/search", /*text*/ "Search", /*image*/ "mono:img\find.svg")
// Una seconda sezione, con una sola voce
uo_nav.of_add_section(/*key*/ "settings", /*text*/ "Settings")
uo_nav.of_add_item(/*keys*/ "settings/prefs", /*text*/ "Preferences", /*image*/ "mono:img\gear.svg")
// La selezione si posa sulla VOCE, tramite il suo indirizzo : la sezione, poi la voce
uo_nav.of_select_item(/*keys*/ "nav/home")
// of_select_item solleva ue_selection_changed, come un clic : la prima pagina si apre li
// evento ue_selection_changed di uo_nav : (string as_from_keys, string as_keys)
choose case as_keys
case "nav/home" ; of_open_home()
case "nav/docs" ; of_open_documents()
case "settings/prefs" ; of_open_preferences()
end choose
Due livelli, un indirizzo #
Un identificatore di voce è unico solo nella sua sezione: una voce si designa quindi con il suo indirizzo, la sezione e poi la voce unite da / — "nav/docs". È il componente a riceverlo (of_item, of_select_item, of_remove_item…); una sezione si designa con la sola chiave (of_section("nav")). Vedere Gerarchie.
// Una sezione tramite la chiave, una voce tramite il suo indirizzo
uo_nav.of_section(/*key*/ "nav").is_title = "Navigation"
uo_nav.of_item(/*keys*/ "nav/docs").is_text = "Documents"
Anche gli event portano il percorso completo, e con esso la voce lasciata: ue_selection_changed(as_from_keys, as_keys).
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
ib_collapsed | boolean | false | true comprime la barra in una barra di sole icone: titoli di sezione ed etichette lasciano posto a un filetto tra le sezioni, e tutte le voci restano visibili, anche quelle di una sezione compressa (la compressione torna all'uscita). Una voce senza icona mostra la sua iniziale, e ogni voce dice la sua etichetta al passaggio del mouse |
ib_auto_width | boolean | false | Opt-in: idem per la larghezza, anche da espansa (la barra si allinea all'etichetta più lunga). La compressione in striscia di icone, invece, si restringe già da sola; ue_auto_width segue in entrambi i casi |
ib_reorderable | boolean | false | Opt-in: l'utente può spostare una voce con il mouse. Lo spostamento resta nella sua sezione — un identificatore di voce è unico solo lì, quindi attraversare rischierebbe due chiavi identiche (attiva ue_item_reordered) |
ib_veto_selection | boolean | false | Opt-in: chiedere prima che la selezione si sposti — un gesto dell'utente e of_select_item / of_clear_selection (solleva ue_selection_changing, che può rifiutare; un ordine rifiutato restituisce -4). Disattivato per impostazione predefinita, come ogni evento annullabile della libreria: impostate true quando dovete poter rifiutare (inserimento non salvato). Ogni domanda di un gesto costa un andata e ritorno verso PowerBuilder (~35 ms) |
is_theme_style | string | "" | Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio |
is_theme_mode | string | "" | Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio |
il_theme_accent | long | -1 | Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello del tema) |
is_tooltip | string | "" | Tooltip semplice mostrato al passaggio del mouse sul componente |
is_super_tooltip_title | string | "" | Titolo del tooltip avanzato (prevale su is_tooltip) |
is_super_tooltip_text | string | "" | Testo del tooltip avanzato (markup avanzato accettato) |
is_super_tooltip_image | string | "" | Immagine del tooltip avanzato |
Proprietà di una sezione — n_pbt_listbar_section #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_title | string | "" | Titolo della sezione. Accetta il testo formattato con tag. Un titolo vuoto non mostra alcuna riga di intestazione: la sezione diventa un semplice raggruppamento invisibile; uno spazio la separa dalla sezione sopra (un filetto nella barra compressa), e non si comprime più — nessuno potrebbe riaprirla |
ib_collapsed | boolean | false | Fisarmonica: true comprime le voci di questa sezione. L'intestazione resta visibile e il suo chevron ruota; ue_section_toggled segue, come per un clic sull'intestazione |
ib_pinned | boolean | false | true fissa la sezione in fondo alla barra (Impostazioni, Guida): un piede che resta visibile mentre il resto della barra scorre, spinto in fondo quando lo spazio non manca, e in fondo anche nella barra compressa. Più sezioni fissate si impilano nel loro ordine. Cambia solo il disegno: la disposizione (of_get_layout) mantiene l'ordine delle sezioni, e la freccia Giù passa dall'ultima voce in alto alla prima del piede |
is_image | string | "" | Icona davanti al titolo della sezione (forme accettate: percorso, mono:, tint:, risorsa di DLL). Una stringa vuota la toglie |
il_accent | long | -1 | Accento di questa sezione, cioè del suo titolo e di nient'altro: le sue voci mantengono il proprio (-1 = quello del componente) |
il_back_color | long | -1 | Sfondo del titolo della sezione, in RGB(r,g,b) (-1 = quello del componente) |
il_text_color | long | -1 | Colore del testo del titolo della sezione (-1 = quello del componente) |
il_back_color_hover | long | -1 | Sfondo del titolo sotto il puntatore (-1 = quello del componente) |
il_text_color_hover | long | -1 | Colore del testo del titolo sotto il puntatore (-1 = quello del componente) |
Proprietà di una voce — n_pbt_listbar_item #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_text | string | "" | Etichetta della voce, modificabile a caldo senza ricostruire la barra. Accetta il testo formattato con tag |
is_image | string | "" | Icona, modificabile a caldo (forme accettate: percorso, mono:, tint:, risorsa di DLL) |
ib_enabled | boolean | true | false disattiva la voce: resta al suo posto e non risponde più a nulla — né clic, né Invio, né clic destro, e le frecce la saltano |
ib_visible | boolean | true | false nasconde la voce senza rimuoverla dalla barra. Una voce nascosta non può diventare la selezione (of_select_item restituisce -5); nascondere quella che è selezionata la lascia selezionata, e mostrarla di nuovo la restituisce com'era |
is_badge | string | "" | Pastiglia contatore in fondo alla voce ("12" non letti), nei colori pastiglia del tema; nella barra compressa, sull'angolo dell'icona. Qualsiasi testo breve, markup accettato. Una stringa vuota la rimuove |
of_is_selected ( ) → boolean | — | — | Questa voce è quella selezionata? Sola lettura, e volutamente: la selezione è uno stato dell'intera barra, non un indicatore per voce. Per impostarla, of_select_item sul componente |
is_tooltip | string | "" | Tooltip semplice mostrato al passaggio del mouse sull'item |
is_super_tooltip_title | string | "" | Titolo del tooltip avanzato dell'item (prevale su is_tooltip) |
is_super_tooltip_text | string | "" | Testo del tooltip avanzato dell'item (markup avanzato accettato) |
is_super_tooltip_image | string | "" | Immagine del tooltip avanzato dell'item |
il_accent | long | -1 | Accento di questa voce: la barretta che la marca quando è selezionata lo prende (-1 = quello del componente). Per « questa voce in rosso », il_back_color / il_text_color |
il_back_color | long | -1 | Sfondo proprio della voce, in RGB(r,g,b) (-1 = ciò che dà il tema) |
il_text_color | long | -1 | Colore del testo della voce (-1 = ciò che dà il tema) |
il_back_color_hover | long | -1 | Sfondo della voce sotto il puntatore (-1 = ciò che dà il tema) |
il_text_color_hover | long | -1 | Colore del testo della voce sotto il puntatore (-1 = ciò che dà il tema) |
Metodi #
Sul componente #
| Metodo | Ruolo | |
|---|---|---|
of_add_section (string as_key, string as_text) | Aggiunge una sezione in fondo alla barra. Un testo vuoto non disegna alcuna riga di titolo. L'handle viene da of_section("nav") quando volete impostare una proprietà. Restituisce 0 una volta applicato, -5 se la chiave è vuota, già presa o contiene / o ` | , -2` se il componente non è creato |
of_insert_section (string as_key, string as_text, integer ai_index) | Aggiunge una sezione al rango scelto (prima posizione = 1) invece che in fondo. L'indice conta sezioni, non righe. Un nome già preso viene rifiutato: due sezioni con lo stesso nome renderebbero ambiguo l'indirizzo di ciascuna delle loro voci. Restituisce 0 una volta applicato, -5 se la chiave è vuota, già presa o contiene / o ` | , -2` se il componente non è creato |
of_move_section (string as_key, integer ai_index) | Sposta una sezione al rango ai_index, con le sue voci. Spostare solo l'intestazione lascerebbe cadere le sue voci nella sezione che si ritrova sopra di esse. Restituisce 0 una volta applicato, -5 per una sezione che questa barra non ha mai aggiunto, -2 se il componente non è creato | |
of_remove_section (string as_key) | Rimuove una sezione e tutto ciò che contiene. Svuotarla conservando le sue voci le renderebbe orfane: porterebbero un identificatore di sezione che non nomina più nulla. Se la selezione vi si trovava, ue_selection_changed annuncia che non ce n'è più. Restituisce 0 una volta applicato, -5 per una sezione che questa barra non ha mai aggiunto, -2 se il componente non è creato | |
of_section (string as_key) | Handle di una sezione, tramite la sua chiave: titolo, icona, compressione e colori si impostano da esso (creato al primo accesso). Una voce si raggiunge invece dal componente, tramite il suo indirizzo (of_item) | |
of_add_item (string as_keys, string as_text, string as_image) | Aggiunge una voce al suo indirizzo, "nav/home": la sezione in cui atterra, poi il suo identificatore. Un overload omette l'icona. Restituisce 0 una volta aggiunta, -5 se la sezione non è stata aggiunta da questa barra, se l'indirizzo è già preso o se la chiave contiene ` | , -2` se il componente non è creato |
of_item (string as_keys) | Handle di una voce, tramite il suo indirizzo (creato al primo accesso) | |
of_insert_item (string as_keys, string as_text, integer ai_index) | Inserisce una voce alla posizione ai_index nella sua sezione (prima posizione = 1). Restituisce 0 una volta aggiunta, -5 se la sezione non è stata aggiunta da questa barra, se l'indirizzo è già preso o se la chiave contiene ` | , -2` se il componente non è creato |
of_insert_item (string as_keys, string as_text, string as_image, integer ai_index) | Idem, con l'icona della voce: of_add_item ne prende una, quindi anche l'inserimento deve poterlo fare. Restituisce 0 una volta aggiunta, -5 se la sezione non è stata aggiunta da questa barra, se l'indirizzo è già preso o se la chiave contiene ` | , -2` se il componente non è creato |
of_move_item (string as_keys, integer ai_index) | Sposta una voce esistente nella sua sezione, conservandone lo stato. Restituisce 0 una volta applicato, -5 per un indirizzo che questa barra non ha mai aggiunto, -2 se il componente non è creato | |
of_remove_item (string as_keys) | Rimuove una voce, designata dal suo indirizzo. Se era la selezione, ue_selection_changed annuncia che non ce n'è più. Restituisce 0 una volta applicato, -5 per un indirizzo che questa barra non ha mai aggiunto, -2 se il componente non è creato | |
of_clear ( ) | Svuota la barra: tutte le sezioni e tutte le voci. Se una voce era selezionata, ue_selection_changed annuncia che non ce n'è più (indirizzo vuoto); ue_layout_changed non viene sollevato, state ricostruendo. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_select_item (string as_keys) | Seleziona una voce, come un clic su di essa: con ib_veto_selection attivo, viene posto prima ue_selection_changing; poi segue ue_selection_changed, come per un clic (subito dopo il vostro script, dalla coda degli eventi), e of_selected_key() letto subito dopo restituisce già il nuovo indirizzo. Voce già selezionata: nulla viene chiesto né sollevato. Restituisce 0 una volta selezionata (o se già selezionata), -4 se il vostro ue_selection_changing ha rifiutato (nulla si muove), -5 per un indirizzo che questa barra non ha mai aggiunto, una voce nascosta o una voce che il limite della demo non disegna, -2 se il componente non è creato | |
of_get_layout ( ) | Rilegge la disposizione corrente in JSON: le sezioni nell'ordine, ciascuna con le sue voci in ordine e il suo stato compresso. Da memorizzare (file, database, registro) e da restituire con of_set_layout all'avvio successivo. La stessa coppia porta gli stessi nomi su ogni componente riorganizzabile | |
of_set_layout (string as_layout_json) | Ripristina una disposizione letta con of_get_layout o ricevuta con ue_layout_changed. Ciò che la disposizione non nomina conserva il suo posto in fondo: una disposizione di ieri non deve far sparire ciò che è stato aggiunto da allora. Applicarla non genera alcun event — l'avete fornita voi. Restituisce 0 una volta applicato, -5 per un testo vuoto o che non è un oggetto JSON (un file troncato): non viene inviato nulla; lo stato compresso di una sezione assente è ignorato, -2 se il componente non è creato | |
of_clear_selection ( ) | Non lascia nessuna voce selezionata, come ogni spostamento: con ib_veto_selection attivo, viene posto prima ue_selection_changing, poi segue ue_selection_changed con un indirizzo vuoto. Già nulla di selezionato: nulla viene chiesto né sollevato. Restituisce 0 una volta applicato, -4 se il vostro ue_selection_changing ha rifiutato (la voce resta selezionata), -2 se il componente non è creato | |
of_selected_key ( ) | Indirizzo della voce selezionata — "nav/docs", "" se nessuna. È esattamente ciò che vi consegna ue_selection_changed: un confronto è un confronto, non una ricomposizione. Sempre la voce corrente, letta nel componente: dopo un clic, e anche subito dopo of_select_item | |
of_reset ( ) | Svuota la barra poi riporta il componente al suo stato nuovo. Se una voce era selezionata, ue_selection_changed parte con un indirizzo vuoto; ue_layout_changed non viene sollevato. 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_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 |
Su una sezione — n_pbt_listbar_section #
| Metodo | Ruolo |
|---|---|
of_count ( ) | Numero di voci della sezione, nascoste comprese |
of_keys_at (long al_index) | Indirizzo della voce al rango al_index (da 1) — "nav/docs", da ripassare così com'è a of_item |
of_has (string as_key) | La sezione contiene questa voce? |
Event #
| Event | Attivato quando |
|---|---|
ue_selection_changed (string as_from_keys, string as_keys) | La selezione si è spostata: l'utente ha scelto una voce (clic, Invio, Spazio), il vostro codice l'ha spostata (of_select_item, of_clear_selection — anche un ordine lo solleva, come SelectItem solleva SelectionChanged), oppure la voce selezionata è sparita (of_remove_item, of_remove_section, of_clear, of_reset — as_keys è allora vuoto). Stessi argomenti di ue_selection_changing: la domanda e il suo esito si leggono allo stesso modo, e la coppia as_from_* designa la voce lasciata (vuota se nessuna) |
ue_section_toggled (string as_key, boolean ab_collapsed) | L'utente comprime o espande una sezione: clic sul titolo, Invio sul titolo, o le frecce Sinistra / Destra (invertite da destra a sinistra), o il vostro codice che imposta ib_collapsed di una sezione |
ue_item_reordered (string as_keys, integer ai_index) | L'utente ha finito di trascinare una voce. ai_index è il suo nuovo rango nella sua sezione, a partire da 1, come of_move_item. Conservi quest'ordine per restituire all'utente la barra come l'ha lasciata |
ue_layout_changed (string as_layout_json) | La disposizione da conservare è cambiata: una voce o una sezione si è spostata, una sezione è stata compressa o espansa, qualcosa è stato rimosso — dall'utente o dal vostro codice. Porta la disposizione intera, non solo ciò che si è spostato: conservarla è un'assegnazione. Le aggiunte, la barra compressa, of_set_layout, of_clear e of_reset non lo sollevano: è costruzione, non disposizione |
ue_item_rclicked (string as_keys) | L'utente ha fatto clic destro su una voce: il suo indirizzo, "nav/docs". Un evento per clic destro, e la voce non viene selezionata. Aprite lì il vostro menu, al puntatore: m_menu.PopMenu(PointerX(), PointerY()). Una voce disattivata non solleva nulla |
ue_selection_changing (string as_from_keys, string as_keys) → boolean | Annullabile, posto prima che la selezione si sposti — un gesto dell'utente, of_select_item o of_clear_selection —, e solo quando ib_veto_selection = true (disattivato per impostazione predefinita). Restituite false per restare dove siete: nulla si muove, e l'ordine del vostro codice restituisce -4 |
ue_auto_width (long al_width) | Il componente ha ricalcolato la propria larghezza ideale — richiede ib_auto_width = true |
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 #
Menu laterale completo #
// Tutta la barra in un solo rendering
uo_nav.of_set_redraw(/*on*/ false)
// Prima sezione e le sue tre voci
uo_nav.of_add_section(/*key*/ "folders", /*text*/ "Folders")
uo_nav.of_add_item(/*keys*/ "folders/recent", /*text*/ "Recent", /*image*/ "mono:img\clock.svg")
uo_nav.of_add_item(/*keys*/ "folders/customers", /*text*/ "Customers", /*image*/ "mono:img\user.svg")
uo_nav.of_add_item(/*keys*/ "folders/archives", /*text*/ "Archives", /*image*/ "mono:img\box.svg")
// Seconda sezione e le sue due voci
uo_nav.of_add_section(/*key*/ "tools", /*text*/ "Tools")
uo_nav.of_add_item(/*keys*/ "tools/import", /*text*/ "Import", /*image*/ "mono:img\import.svg")
uo_nav.of_add_item(/*keys*/ "tools/export", /*text*/ "Export", /*image*/ "mono:img\export.svg")
// Un solo rendering per tutto, poi la prima voce viene selezionata
uo_nav.of_set_redraw(/*on*/ true)
uo_nav.of_select_item(/*keys*/ "folders/recent")
Barra comprimibile che libera spazio #
// Comprimere in una barra di sole icone : la barra si restringe da sola (e riprende la
// sua larghezza quando la si espande).
uo_nav.ib_collapsed = true
// evento ue_auto_width di uo_nav : (long al_width)
// La barra ha appena adottato la sua larghezza ideale : riallineare cio che sta alla sua destra.
uo_content.x = uo_nav.x + al_width
uo_content.width = parent.width - uo_content.x
Fisarmonica: comprimere una sezione #
// Comprimere la sezione degli archivi, usata di rado
uo_nav.of_section(/*key*/ "folders").ib_collapsed = true
// evento ue_section_toggled di uo_nav : (string as_key, boolean ab_collapsed)
// Ricordare la compressione scelta dall'utente
of_save_preference("section_" + as_key, String(ab_collapsed))
Impostazioni e Guida fissate in fondo #
Una sezione senza titolo, fissata: nessuna riga di intestazione, due voci che restano ai piedi della barra anche quando la navigazione, più lunga della finestra, scorre. Un clic lì seleziona come altrove: ue_selection_changed riceve foot/settings.
// Una sezione SENZA titolo (nessuna riga di intestazione), fissata in fondo alla barra :
// resta visibile mentre le voci sopra di essa scorrono
uo_nav.of_add_section(/*key*/ "foot", /*text*/ "")
uo_nav.of_add_item(/*keys*/ "foot/settings", /*text*/ "Settings", /*image*/ "mono:img\\gear.svg")
uo_nav.of_add_item(/*keys*/ "foot/help", /*text*/ "Help", /*image*/ "mono:img\\help.svg")
uo_nav.of_section(/*key*/ "foot").ib_pinned = true
Reagire alla navigazione #
// evento ue_selection_changed di uo_nav : (string as_from_keys, string as_keys)
// L'indirizzo porta i due livelli : due sezioni possono avere entrambe una voce "list".
// Local variables
n_pbt_utils lnv_utils // autoinstantiate : niente da creare, niente da distruggere
string ls_keys[]
// Divide l'indirizzo : [1] = la sezione, [2] = la voce
if lnv_utils.of_split_path(/*keys*/ as_keys, /*out*/ ls_keys) < 2 then return
choose case ls_keys[1]
case "folders" ; of_open_folder(ls_keys[2])
case "tools" ; of_run_tool(ls_keys[2])
end choose
Rifiutare un cambio di selezione #
// La domanda e disattivata per IMPOSTAZIONE PREDEFINITA : attivarla per poter rifiutare uno spostamento
uo_nav.ib_veto_selection = true
// evento ue_selection_changing di uo_nav :
// (string as_from_keys, string as_keys)
// Restituire FALSE lascia l'utente sulla voce che sta lasciando.
if of_has_unsaved_changes(as_from_keys) then
MessageBox("Inserimento", "Terminate la scheda corrente prima di navigare.")
return false
end if
return true
Aggiornare una voce a caldo #
// Local variables
n_pbt_listbar_item lnv_entry
// La voce si designa con il suo indirizzo : la sezione, poi la voce
lnv_entry = uo_nav.of_item(/*keys*/ "folders/recent")
lnv_entry.is_text = "Recent (12)"
lnv_entry.is_image = "mono:img\clock_full.svg"
// Disattivare o nascondere secondo i diritti, senza ricostruire la barra
uo_nav.of_item(/*keys*/ "tools/import").ib_enabled = of_is_allowed("import")
uo_nav.of_item(/*keys*/ "tools/export").ib_visible = gb_expert_mode
Selezione pilotata dal codice #
// Spostare la selezione altrove : la banda d'accento segue, e
// ue_selection_changed parte come per un clic
uo_nav.of_select_item(/*keys*/ "folders/customers")
// Oppure cancellarla del tutto
uo_nav.of_clear_selection()
Ricostruire la barra #
// of_clear svuota sezioni e voci ; of_reset ripristina anche i valori predefiniti
uo_nav.of_clear()
of_build_menu_for_profile()
Buone pratiche #
- Una voce si aggiunge tramite il suo indirizzo:
of_add_item("nav/home", ...). L'handle di sezione serve ormai solo a impostare una proprietà, eof_section("nav")lo restituisce al primo accesso. - Usi
mono:per le icone: si ricolorano con il tema, sia chiaro sia scuro, e restano leggibili una volta che la barra è compressa in barra di sole icone. - Un titolo di sezione vuoto funge da raggruppamento discreto: le voci sono distanziate senza che appaia alcuna riga di intestazione. Una tale sezione non si comprime.
- Da tastiera: le frecce Su / Giù percorrono titoli e voci, Sinistra / Destra comprimono ed espandono una sezione (invertite da destra a sinistra), Invio o Spazio sceglie, una lettera salta alla riga successiva che inizia con essa.
ib_collapsedrestringe l'userobject alla striscia di icone, ma non sposta i suoi altri controlli: gestiscaue_auto_widthper occupare lo spazio liberato, altrimenti resta vuoto.- In modalità barra di icone restano solo le icone: ogni voce dice la sua etichetta al passaggio del mouse, e una voce senza icona mostra la sua iniziale. Date comunque un'icona a ciascuna — un'iniziale si distingue male da un'altra.
- La domanda viene posta solo se la attivate (
ib_veto_selection = true): fatelo solo dove dovete poter rifiutare uno spostamento, perché ogni domanda costa un andata e ritorno verso PowerBuilder.of_select_itemnon la pone mai. ib_enabled = falseè preferibile aib_visible = falsequando la voce tornerà disponibile: il menu non cambia forma sotto gli occhi dell'utente.
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.
| Membri | Ruolo | Descritto in |
|---|---|---|
of_count · of_keys_at · of_has | Percorrere ciò che il componente contiene | 3.2 Gli item |
of_reset | Riportare il componente a zero | 3.6 Riportare un componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Scorciatoie da tastiera del componente | 3.5 Le scorciatoie da tastiera |
of_is_created · of_is_ready · of_get_last_error | Se è nato, se è pronto, cosa è fallito | 3.7 Diagnostica |
of_save_as_png · of_save_as_jpg | Esportare il rendering in immagine | 3.8 Esportare il rendering come immagine |
of_set_redraw | Raggruppare le modifiche in un solo ridisegno | 3.10 Buone pratiche |
of_preload_icons | Icone mostrate senza ritardo | Visualizzazione istantanea: of_icon |
of_set_translation | Tradurre una dicitura del componente | 5.2 Adattare un'etichetta: of_set_translation |
of_focus_webview | Dare il focus al componente | 6.4 Tastiera e focus |
of_print · of_print_to_pdf | Stampare, o scrivere un PDF | 6.9 Stampare |
of_set_property · of_get_property · of_component_name | Pilotare una proprietà per nome | 3.1 Il motore delle proprietà |
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.