menubar — u_pbt_menubar #
← Riferimento dei componenti · Indice della guida
Barra dei menu dell'applicazione: menu, sottomenu, voci spuntabili, separatori, icone e scorciatoie — tutto disegnato dalla libreria, senza alcun menu di Windows.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Menu bar: l'anteprima, il codice che lo produce e questa pagina, affiancati.
In breve #
| Userobject | u_pbt_menubar |
| Classe di item | n_pbt_menubar_item (una voce) · n_pbt_menubar_menu (un menu della barra) |
| Serve a | Dare alla Sua finestra la barra dei menu dell'applicazione, con lo stesso tema di tutto il resto |
| Principio | Dichiara i menu, poi le loro voci; ogni voce si ritrova tramite l'indirizzo menu/id |
Avvio rapido #
// event open della finestra
uo_menus.of_add_menu(/*key*/ "file", /*text*/ "File")
uo_menus.of_add_item(/*keys*/ "file/open", /*text*/ "Apri")
uo_menus.of_add_item(/*keys*/ "file/save", /*text*/ "Salva")
// event ue_item_selected : (string as_keys)
choose case as_keys
case "file/open"; of_open_document()
case "file/save"; of_save_document()
end choose
Il modello: tre livelli, una chiave per livello #
Una barra dei menu ha tre livelli, e ciascuno si indica con la sua chiave:
| Livello | Aggiunto da | Chiave |
|---|---|---|
| Il menu della barra | of_add_menu | la sua chiave, file |
| La voce di un menu | of_add_item | l'indirizzo menu/voce, file/open |
| La sotto-voce di una voce | of_add_item | l'indirizzo menu/voce/sottovoce, file/export/pdf — profondo quanto serve |
Una chiave è unica solo sotto il suo genitore: per questo una voce si designa sempre con il suo indirizzo completo, prima il menu — mai con la sola chiave. Due menu possono quindi avere ciascuno la propria voce open, e due sottomenu il proprio pdf (file/export/pdf, file/print/pdf), senza disturbarsi. Una chiave non contiene né / né |, non è vuota e non inizia con __: le aggiunte la rifiutano (-5), come rifiutano un indirizzo già preso o un genitore mai aggiunto.
Un separatore non ha chiave:
of_add_separatortraccia una linea alla fine di un menu (file) o della cascata di una voce (file/export), e dopo non c'è nulla da rileggere.
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
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 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 |
ib_wrap | boolean | false | false (predefinito): la barra resta su una riga; i titoli che non entrano, a partire dalla fine, passano nel menu di un chevron in fondo (le loro voci in cascata), e l'altezza non cambia più. true: la barra va a capo e annuncia la nuova altezza (ue_auto_height) — ciò che faceva prima della 4.0 |
ib_track_hover | boolean | false | Sottoscrizione a ue_item_hover: senza di essa i menu a discesa non segnalano nemmeno la voce puntata — un evento scatenato a ogni movimento del puntatore viene inviato solo a un'applicazione che lo ha chiesto |
Proprietà di una voce — n_pbt_menubar_item #
Ottenute con of_item(indirizzo) — of_item("file/export/pdf"). Un indirizzo di un solo livello designa un menu, non una voce: il suo handle non cambia nulla, usate of_menu.
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_text | string | — | Cambia l'etichetta della voce, a caldo |
ib_enabled | boolean | true | Voce attiva; una voce disattivata non risponde più al clic |
ib_visible | boolean | true | Voce tolta dall'elenco senza essere rimossa — sottomenu e scorciatoia sospesi con lei; conserva la sua chiave e torna com'era. Una scorciatoia sospesa conserva la sua combinazione: non arriva nemmeno alla sua applicazione; is_shortcut = "" gliela restituisce |
is_shortcut | string | "" | L'acceleratore mostrato a destra della voce (Ctrl+S) — e attivo: la combinazione solleva ue_item_selected per quella voce, ovunque sia il focus. In un menu si imparano le scorciatoie di un'applicazione; un tasto mostrato che non fa nulla insegna il contrario. Tasti: una lettera, una cifra, da F1 a F24, Enter, Esc, Del, Insert, Home, End, PageUp, PageDown, e con Ctrl o Alt anche +, -, ,, ., le frecce (Left…), Space, Tab, Backspace (Ctrl++ per lo zoom). Una scorciatoia va su una foglia: su una voce che apre una cascata non è né mostrata né attivata. Una stringa vuota toglie entrambi. Armato una volta che la voce esiste (prima of_add_item): su un indirizzo che non designa alcuna voce, non viene armato nulla. Prima di agire, lancia ue_menu_opening del suo menu |
ib_checked | boolean | false | Spunta mostrata davanti alla voce — per un'opzione che si attiva e si disattiva |
is_image | string | "" | L'icona della voce, cambiata al volo: la voce conserva il suo posto nell'elenco. Stessi percorsi di of_add_item (mono:, tint:, file.dll:NOME); una stringa vuota la toglie |
is_group | string | "" | Rende la voce una voce radio: le voci di uno stesso gruppo sotto lo stesso genitore si escludono — spuntarne una (ib_checked = true, o la scelta dell'utente) toglie la spunta alle altre, e un pallino tondo sostituisce la spunta. ue_item_selected dice sempre quale è stata scelta. Una stringa vuota la rende di nuovo una voce ordinaria |
is_tone | string | "" | Il tono del comando: il suo testo, a riposo, in un colore del tema chiaro o scuro — TONE_DANGER per quello che distrugge, TONE_WARN, TONE_SUCCESS, TONE_INFO; vuoto o TONE_NEUTRAL = il testo del tema. Puntata, la voce prende i colori di passaggio del tema; un il_text_color della voce prevale. Le costanti sono su u_pbt_menubar |
il_accent | long | -1 | Accento di questa voce: la spunta e il bordo quando è puntata (-1 = quello del tema) |
il_back_color | long | -1 | Sfondo di questa voce nell'elenco, a riposo |
il_text_color | long | -1 | Colore del testo di questa voce |
il_back_color_hover | long | -1 | Sfondo di questa voce quando è puntata |
il_text_color_hover | long | -1 | Colore del testo di questa voce quando è puntata |
is_tooltip | string | "" | Conservata e rileggibile, ma una voce dell'elenco non mostra alcun tooltip: l'elenco nativo non ne ha. Solo i titoli dei menu mostrano il loro (of_menu) |
is_super_tooltip_title | string | "" | Titolo del suo tooltip avanzato — conservato, non mostrato (vedi is_tooltip) |
is_super_tooltip_text | string | "" | Testo del suo tooltip avanzato — conservato, non mostrato |
is_super_tooltip_image | string | "" | Immagine del suo tooltip avanzato — conservata, non mostrata |
Proprietà di un menu — n_pbt_menubar_menu #
Ottenute con of_menu(chiave) — of_menu("file"). Colori e tooltip appaiono sul titolo del menu nella barra.
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_text | string | — | Etichetta del menu, & compreso (mnemonico), cambiata senza ricostruire la barra |
ib_enabled | boolean | true | Menu ingrigito: non si apre più, le sue voci e le loro scorciatoie con lui; la tastiera lo salta |
ib_visible | boolean | true | Il menu lascia la barra — voci e scorciatoie addormentate con lui — e vi torna tale e quale. Le scorciatoie addormentate conservano la loro combinazione: non arriva nemmeno alla sua applicazione |
is_align | string | "start" | u_pbt_menubar.ALIGN_END colloca il menu in fondo alla barra, come Aiuto — con quelli che lo seguono nello stesso allineamento, dopo di esso; ALIGN_START (predefinito) lo rimette tra gli altri. Logico: il fondo è il lato sinistro in un layout da destra a sinistra. Con il chevron, i titoli in fondo si ripiegano per primi |
il_accent | long | -1 | Accento di questo menu: una linea sotto il titolo finché il suo elenco è aperto (-1 = nessuno) |
il_back_color | long | -1 | Sfondo del suo titolo, a riposo |
il_text_color | long | -1 | Colore del testo del suo titolo, a riposo |
il_back_color_hover | long | -1 | Sfondo del suo titolo al passaggio o aperto |
il_text_color_hover | long | -1 | Colore del testo del suo titolo al passaggio o aperto |
is_tooltip | string | "" | Tooltip mostrato quando il puntatore sosta sul suo titolo |
is_super_tooltip_title | string | "" | Titolo del tooltip avanzato del suo titolo |
is_super_tooltip_text | string | "" | Testo di quel tooltip avanzato (markup ricco accettato) |
is_super_tooltip_image | string | "" | Immagine di quel tooltip avanzato |
Metodi #
| Metodo | Ruolo |
|---|---|
of_add_menu (string as_key, string as_text) | Aggiunge un menu alla barra. Restituisce 0 una volta applicato, -5 se la chiave è rifiutata (vuota, con / o una barra verticale, che inizia con __, o già presa), -2 se il componente non è creato |
of_add_item (string as_keys, string as_text) | Aggiunge una voce al suo indirizzo: file/open nel menu File, file/export/pdf sotto la voce Export, profondo quanto serve. Restituisce 0 una volta applicato, -5 se l'indirizzo è rifiutato: meno di due livelli, un livello vuoto, una chiave con / o una barra verticale o che inizia con __, un menu o una voce genitore mai aggiunti, o un indirizzo già preso. -2 se il componente non è creato |
of_add_item (string as_keys, string as_text, string as_image, boolean ab_checked) | Lo stesso, con l'icona e la spunta. Per ingrigire la voce, ora o più tardi, passate dal suo handle: of_item(indirizzo).ib_enabled = false. Restituisce 0 una volta applicato, -5 se l'indirizzo è rifiutato: meno di due livelli, un livello vuoto, una chiave con / o una barra verticale o che inizia con __, un menu o una voce genitore mai aggiunti, o un indirizzo già preso. -2 se il componente non è creato |
of_add_separator (string as_keys) | Traccia una linea di separazione alla fine di un menu (file) o della cascata di una voce (file/export). Restituisce 0 una volta applicato, -5 se a quell'indirizzo non è stato aggiunto nulla, -2 se il componente non è creato |
of_add_header (string as_keys, string as_text) → long | Aggiunge un'intestazione di sezione alla fine di un menu (view) o della cascata di una voce (view/panels): una riga di titolo sopra le voci che la seguono, fino alla prossima intestazione o separatore. Non è una voce — mai scelta, mai contata da of_count, né nel limite demo — e non viene disegnata quando tutte le voci che introduce sono nascoste. Restituisce 0 una volta aggiunta, -5 se a quell'indirizzo non è stato creato nulla, -2 se il componente non è creato |
of_item (string as_keys) → n_pbt_menubar_item | Handle di una voce, tramite il suo indirizzo — of_item("file/export/pdf") —, per leggerne o impostarne le proprietà. È esattamente ciò che restituisce ue_item_selected: l'argomento si ridà tale e quale qui. Mai la sola chiave: due sottomenu possono avere ciascuno il proprio pdf, e solo l'indirizzo li distingue. Un indirizzo di un livello designa un menu: il suo handle non cambia nulla, usate of_menu |
of_menu (string as_key) → n_pbt_menubar_menu | Handle di un menu di primo livello, per leggerlo o cambiarlo al volo — disattivarlo, nasconderlo, rinominarlo, allinearlo in fondo, colorarlo — senza ricostruire la barra; ib_visible lo toglie dalla barra, voci e scorciatoie sospese con lui |
of_remove_item (string as_keys) → long | Rimuove una voce, al suo indirizzo (file/open, file/export/pdf) — con la sua cascata; le altre restano. I suoi handle sono liberati e la sua scorciatoia disarmata: il tasto torna alla vostra applicazione. Per svuotare una cascata mantenendo la voce al suo posto: of_clear_items. Restituisce 0 una volta applicato, -5 se a quell'indirizzo non vive alcuna voce, -2 se il componente non è creato |
of_remove_menu (string as_key) → long | Rimuove un menu di primo livello, con le sue voci — handle liberati, scorciatoie disarmate. La barra viene ridisegnata e la sua altezza riannunciata. Restituisce 0 una volta applicato, -5 per un menu mai aggiunto, -2 se il componente non è creato |
of_insert_item (string as_keys, string as_text, integer ai_index) → long | Inserisce una voce a un rango del suo elenco invece che alla fine: as_keys è l'indirizzo che avrà (file/recent), ai_index il suo posto tra le voci di quell'elenco, a partire da 1 (0 o meno = in testa; oltre la fine = alla fine). Separatori e intestazioni non contano: la voce va subito prima di quella che occupava quel rango. Un elenco di file recenti resta così al suo posto, sopra Esci. Restituisce 0 una volta applicato, -5 se l'indirizzo è rifiutato (come of_add_item), -2 se il componente non è creato |
of_insert_item (string as_keys, string as_text, string as_image, boolean ab_checked, integer ai_index) → long | Lo stesso, con l'icona e la spunta, come of_add_item. Restituisce 0 una volta applicato, -5 se l'indirizzo è rifiutato, -2 se il componente non è creato |
of_clear_items (string as_keys) → long | Svuota un menu (file) o la cascata di una voce (file/recent) e mantiene il menu o la voce al suo posto — ciò che serve a un elenco di file recenti ricostruito a ogni apertura. Le voci che se ne vanno portano con sé i loro handle e le loro scorciatoie. Restituisce 0 una volta applicato, -5 se a quell'indirizzo non è stato creato nulla, -2 se il componente non è creato |
of_open (string as_key) → long | Apre il menu a discesa di un menu di primo livello dal codice, come farebbe un clic sul suo titolo: prima parte ue_menu_opening, il menu a discesa compare alla sua risposta, poi ue_item_selected o ue_menu_closed. Un menu ripiegato nel chevron si apre dal chevron. Restituisce 0 una volta richiesto, -5 per un menu sconosciuto, nascosto o disattivato, -2 se il componente non è creato |
of_close ( ) → long | Chiude il menu a discesa visibile — o un menu che si sta ancora aprendo — senza scelta: segue ue_menu_closed, come per un clic fuori. Se nulla è aperto, non succede nulla. Restituisce 0 una volta richiesto, -2 se il componente non è creato |
of_is_open ( ) → boolean | TRUE dal momento in cui un menu si apre — il suo ue_menu_opening è partito — finché non si chiude, con una scelta o senza. Letto nel componente, mai in una copia |
of_load_menu (menu am_menu) → long | Costruisce tutta la barra da un menu PowerBuilder — il menu di una finestra: ogni elemento di am_menu diventa un menu della barra, i suoi elementi le voci, cascate comprese, con il loro testo (segni & mantenuti), il loro stato (Enabled, Checked, Visible), l'immagine della barra degli strumenti quando è un file, e il loro Shortcut, mostrato e armato. Le chiavi sono i ClassName degli elementi: m_file/m_export/m_pdf. La barra resta viva: prima di ogni apertura (e prima che una scorciatoia agisca) viene eseguito il Clicked del titolo, come fa PowerBuilder, poi ogni elemento viene riletto: il suo testo (compresa la scorciatoia scritta dopo una tabulazione), Enabled, Checked e Visible. Scegliere una voce esegue prima il Clicked del suo elemento, poi ue_item_selected; un elemento disattivato nel frattempo non esegue nulla (ue_menu_closed). Un Clicked non trova ParentWindow: tenete la finestra in una variabile d'istanza del menu. Il menu sostituisce ciò che la barra conteneva; tenete vivo l'oggetto menu. Restituisce 0 una volta caricato, -5 se am_menu non è valido, -2 se il componente non è creato |
of_loaded_item (string as_keys) → menu | L'elemento di menu PowerBuilder da cui proviene un menu o una voce (of_load_menu), tramite il suo indirizzo — per leggere ciò che il menu sa e la barra no, il suo MicroHelp per una riga d'aiuto in ue_item_hover. Un indirizzo che non proviene da un menu restituisce un riferimento non valido: verificatelo con IsValid |
of_clear ( ) | Svuota la barra — menu e voci; i loro handle sono liberati e le scorciatoie delle voci disarmate. Restituisce 0 una volta applicato, -2 se il componente non è creato |
of_reset ( ) | Svuota la barra e riporta tutte le proprietà ai valori predefiniti. Restituisce 0 una volta applicato, -2 se il componente non è creato |
of_set_redraw (boolean) | Raggruppa una raffica di modifiche in un solo 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 |
Event #
| Event | Scatta quando |
|---|---|
ue_menu_opening (string as_key) | Lanciato quando un menu di primo livello sta per aprirsi — e il menu a discesa attende: si apre solo quando l'evento è tornato. Attivate, disattivate o riempite qui le sue voci: il cambiamento si vede a questa apertura, non alla successiva. Lanciato anche prima che una scorciatoia di una delle sue voci agisca, come fa Windows: Incolla disattivato o riattivato qui risponde allo stesso modo a Ctrl+V. Il chevron lo lancia una volta per ogni menu che mostra. Ogni ue_menu_opening è seguito da esattamente un ue_item_selected o un ue_menu_closed — compresa un'apertura abbandonata prima di mostrarsi: ciò che ha preparato si può sempre disfare |
ue_menu_closed (string as_key) | Un menu si è chiuso senza scelta: dall'utente (clic fuori, Esc, o scivolamento verso il menu vicino), dal vostro codice che rimuove, svuota, nasconde o disattiva il menu aperto o chiama of_close, per un'apertura abbandonata prima che il suo menu a discesa compaia (scivolamento rapido, Esc, finestra che perde il focus), e per una scorciatoia la cui voce è stata disattivata da ue_menu_opening. Disfate qui ciò che ue_menu_opening aveva preparato (un'anteprima, una selezione). Una scelta lancia invece ue_item_selected, e of_reset non lancia nulla |
ue_item_selected (string as_keys) | L'utente ha scelto una voce, o premuto la sua scorciatoia. as_keys è il suo indirizzo, prima il menu — file/open, file/export/pdf: la sola chiave non dice da quale sottomenu viene, e due sottomenu possono avere ciascuno la propria. Lo stesso testo si ridà tale e quale a of_item. Una voce ingrigita, nascosta o rimossa mentre il suo elenco era aperto non solleva nulla. Una voce di un menu PowerBuilder (of_load_menu) ha già eseguito il Clicked del suo elemento |
ue_item_hover (string as_keys) | Con ib_track_hover = true: la voce sotto il puntatore o la tastiera in un menu a discesa aperto, con il suo indirizzo (file/export/pdf) — anche una voce disattivata, il suo aiuto può dire perché. Scatenato una volta per voce, poi con un indirizzo vuoto alla chiusura del menu (prima di ue_item_selected su una scelta): scrivete il testo di aiuto di una barra di stato, poi svuotatelo. Nel menu a discesa del chevron, un menu ripiegato sorvolato restituisce la sola chiave (tools): l'aiuto di quel menu |
ue_auto_height (long al_height) | La barra annuncia l'altezza che le serve — riposizioni ciò che sta sotto |
ue_ready ( ) | Il componente ha finito di caricare; 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 tema; l'userobject l'ha già adottato (backcolor) |
Una riga, per impostazione predefinita. I titoli che non entrano passano nel chevron in fondo alla barra (
ib_wrap = false, il valore predefinito): l'altezza resta quella di una riga eue_auto_heightviene scatenato una volta. Conib_wrap = truela barra va a capo: non scorre mai, la sua altezza segue le righe eue_auto_heightvi dice di quanto a ogni cambio di larghezza. Aprire il chevron lanciaue_menu_openingper ogni menu che mostra (eue_menu_closedper ciascuno alla chiusura): un'applicazione che riempie i suoi elenchi all'apertura li riempie tutti.
Da tastiera #
| Tasto | Effetto |
|---|---|
| Alt · F10 | Dà la tastiera alla barra e sottolinea le lettere dei menu, come in qualunque applicazione Windows; una seconda pressione la restituisce; Alt agisce al rilascio, da solo: Alt+Maiusc (cambio di layout) o Alt+Tab non lo accendono |
| » | Il chevron dei titoli che non entrano: le frecce vi si fermano come su un titolo, Invio o Giù apre l'elenco dei menu nascosti, e Alt + la lettera di un menu nascosto apre quel menu dal chevron |
| Alt + lettera | Apre il menu di quella lettera (&File) da qualunque controllo della finestra — un campo, un DataWindow. Una scorciatoia Alt+lettera registrata dalla sua applicazione ha la precedenza. Due menu sulla stessa lettera: la banda passa dall'uno all'altro, Invio apre. Una lettera accentata o non latina si digita come sulla tastiera (&Édition: Alt + il tasto della É). Aperto da tastiera, il menu ha la prima voce evidenziata: Invio la sceglie |
| Frecce | Percorrono i menu e le loro voci, saltando i menu ingrigiti; la destra apre una sotto-voce, la sinistra risale. In scrittura da destra a sinistra (RTL) tutto si capovolge: sulla barra, nel menu a tendina (allineato al bordo destro del suo titolo) e nelle cascate, che si aprono a sinistra — la sinistra apre, la destra risale |
| Invio | In un menu a tendina: sceglie la voce evidenziata (ue_item_selected). Su un titolo della barra, Invio, Spazio o Freccia giù aprono il menu. Spazio non sceglie una voce — è anche la regola di Windows |
| Esc | Chiude il menu aperto, o esce dalla modalità menu (dopo Alt o F10), poi restituisce il focus al controllo che lo aveva. Esc resta alla barra: non preme il pulsante Annulla della finestra |
Una barra dei menu non tiene mai il focus. Un clic su un titolo, poi una scelta col mouse: la tastiera torna al controllo in cui si digitava prima che
ue_item_selectedparta.Modifica > Incollaincolla quindi nel campo in modifica, eGetFocus()lo nomina nell'evento. Anche un clic che non apre nulla — su un titolo disattivato, o sulla parte vuota della barra — lascia la tastiera al controllo in cui si stava scrivendo.
Esempi #
Una barra dei menu completa #
// Bloccare il disegno durante la costruzione
uo_menus.of_set_redraw(/*on*/ false)
// Il menu File, con un'icona su Apri e una linea prima di Esci
uo_menus.of_add_menu(/*key*/ "file", /*text*/ "&File")
uo_menus.of_add_item(/*keys*/ "file/open", /*text*/ "&Apri...", /*image*/ "mono:img\packimages.dll:svg/samples/folder-open", /*checked*/ false)
uo_menus.of_add_separator(/*keys*/ "file")
uo_menus.of_add_item(/*keys*/ "file/quit", /*text*/ "&Esci")
// Un sottomenu: Esporta, poi i suoi due formati
uo_menus.of_add_item(/*keys*/ "file/export", /*text*/ "&Esporta")
uo_menus.of_add_item(/*keys*/ "file/export/csv", /*text*/ "CSV")
uo_menus.of_add_item(/*keys*/ "file/export/pdf", /*text*/ "PDF")
// Il menu Visualizza: un'opzione che si spunta
uo_menus.of_add_menu(/*key*/ "view", /*text*/ "&Visualizza")
uo_menus.of_add_item(/*keys*/ "view/grid", /*text*/ "&Griglia", /*image*/ "", /*checked*/ true)
// Un solo ridisegno, con tutto
uo_menus.of_set_redraw(/*on*/ true)
Spuntare, togliere, disattivare #
// L'utente ha invertito la visualizzazione della griglia
uo_menus.of_item(/*keys*/ "view/grid").ib_checked = not uo_menus.of_item(/*keys*/ "view/grid").ib_checked
// Una voce che non ha piu senso si disattiva, non sparisce:
// l'utente deve poter vedere che esiste
uo_menus.of_item(/*keys*/ "file/save").ib_enabled = false
Voci radio e una scorciatoia di zoom #
// Due voci RADIO: spuntarne una toglie la spunta all'altra, un pallino sostituisce la spunta
uo_menus.of_add_item(/*keys*/ "view/small", /*text*/ "Icone &piccole")
uo_menus.of_add_item(/*keys*/ "view/large", /*text*/ "Icone &grandi")
uo_menus.of_item(/*keys*/ "view/small").is_group = "size"
uo_menus.of_item(/*keys*/ "view/large").is_group = "size"
uo_menus.of_item(/*keys*/ "view/large").ib_checked = true
// Lo zoom: Ctrl++ e mostrato E attivo, ovunque sia il focus
uo_menus.of_add_item(/*keys*/ "view/zoomin", /*text*/ "&Ingrandisci")
uo_menus.of_item(/*keys*/ "view/zoomin").is_shortcut = "Ctrl++"
Ricostruire la barra #
// Cambiare area di lavoro: si svuota e si ricostruisce
// of_set_redraw evita di ridisegnare a ogni riga
uo_menus.of_set_redraw(/*on*/ false)
uo_menus.of_clear()
uo_menus.of_add_menu(/*key*/ "tools", /*text*/ "&Strumenti")
uo_menus.of_set_redraw(/*on*/ true)
Una barra stretta, Aiuto in fondo, un testo di aiuto nella barra di stato #
// Aiuto in fondo alla barra ; cio che non ci sta passa nel chevron
uo_menus.of_add_menu(/*key*/ "help", /*text*/ "&Aiuto")
uo_menus.of_add_item(/*keys*/ "help/about", /*text*/ "Informazioni")
uo_menus.of_menu(/*key*/ "help").is_align = u_pbt_menubar.ALIGN_END
// Intestazioni di sezione in View
uo_menus.of_add_header(/*keys*/ "view", /*text*/ "Pannelli")
uo_menus.of_add_item(/*keys*/ "view/tree", /*text*/ "Albero")
uo_menus.of_add_item(/*keys*/ "view/output", /*text*/ "Output")
// Un testo d'aiuto nella barra di stato per la voce puntata
uo_menus.ib_track_hover = true
// ue_item_hover (string as_keys) di uo_menus : vuoto alla chiusura del menu a discesa
choose case as_keys
case "file/save"
st_status.Text = "Salva il documento"
case else
st_status.Text = ""
end choose
Un elenco di file recenti riempito all'apertura #
// Local variables
long ll_i
// Recent al SUO posto in File, dichiarato una volta : le sue voci si scrivono a ogni apertura
uo_menus.of_insert_item(/*keys*/ "file/recent", /*text*/ "&Recenti", /*index*/ 3)
// ue_menu_opening (string as_key) di uo_menus : il menu a discesa lo attende. File : solo le voci
// di Recent, che resta al suo posto. Edit : Incolla segue gli appunti di ADESSO - per un
// clic come per Ctrl+V.
choose case as_key
case "file"
uo_menus.of_clear_items(/*keys*/ "file/recent")
for ll_i = 1 to UpperBound(is_recent_files)
uo_menus.of_add_item(/*keys*/ "file/recent/doc" + String(ll_i), /*text*/ is_recent_files[ll_i])
next
case "edit"
uo_menus.of_item(/*keys*/ "edit/paste").ib_enabled = (Clipboard() <> "")
end choose
// ue_menu_closed (string as_key) di uo_menus : chiuso senza scelta - disfare cio che
// ue_menu_opening aveva preparato
st_status.Text = ""
Riprendere il menu PowerBuilder di una finestra #
// Local variables
menu lm_item
// Il menu della finestra diventa la barra : titoli, voci, scorciatoie, stati.
// im_frame e una variabile d'istanza (m_frame), tenuta finche la barra la usa.
im_frame = create m_frame
uo_menus.of_load_menu(/*menu*/ im_frame)
// Il menu resta il riferimento : disattivate un elemento, la barra lo rilegge alla prossima apertura
im_frame.m_edit.m_paste.Enabled = false
// ue_item_hover (string as_keys) di uo_menus : il MicroHelp dell'elemento di menu
lm_item = uo_menus.of_loaded_item(/*keys*/ as_keys)
if IsValid(lm_item) then st_status.Text = lm_item.MicroHelp
Buone pratiche #
- Dia una chiave di dominio stabile a ogni livello (
file,save):ue_item_selectedrestituisce l'indirizzofile/save, mai l'etichetta — non cambia con la lingua. - Disattivi invece di rimuovere: una voce assente lascia l'utente a cercare, una voce disattivata gli dice che esiste e che gli manca qualcosa.
- Racchiuda la costruzione tra
of_set_redraw(false)/of_set_redraw(true): una barra completa sono presto trenta chiamate. - Riposizioni ciò che sta sotto la barra in
ue_auto_height— l'altezza dipende dal tema e dal corpo del carattere, non è la stessa ovunque. - Le etichette sono sue: le traduca prima di
of_add_item, o le cambi al volo conof_item(...).is_text/of_menu(...).is_text.of_set_translationtraduce solo i testi propri di un componente, e la barra dei menu non ne ha. - Metta una
&in ogni titolo (&File): Alt + la lettera apre il menu da ovunque, come in qualunque applicazione Windows.
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à |
is_accessible_name · is_accessible_description | Il nome e la descrizione che dice un lettore di schermo | 3.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.