propertygrid — u_pbt_propertygrid #
← Riferimento dei componenti · Sommario della guida
propertygrid è la finestra delle proprietà di un IDE, per i vostri dati: valori con nome, ordinati in categorie che si comprimono, ognuno con l'editor del suo tipo — testo, numero, casella di controllo, elenco di scelte, colore, data, password. Due viste (per categoria, alfabetica), una casella di ricerca, un riquadro di guida che descrive la proprietà selezionata e un pulsante … che apre una vostra finestra di dialogo. L'utente modifica,
ue_value_changedve lo dice.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Property grid: l'anteprima, il codice che lo produce e questa pagina, affiancati.
In breve #
| Userobject | u_pbt_propertygrid |
| Classi di item | n_pbt_propertygrid_category (categoria) → n_pbt_propertygrid_property (proprietà) |
| Serve a | Sostituire una schermata di impostazioni messa insieme con campi e caselle con un ispettore a tema, tipizzato e ricercabile: le impostazioni di un documento, di un report, di una scheda, di un oggetto dell'applicazione |
| Valori | Sempre testo, uno per uno (of_property(indirizzo).is_value); tutti insieme e tipizzati con of_values |
| Opzioni opt-in | ib_veto_changes |
Avvio rapido #
// The settings of a report : one value at the top, then a category
uo_grid.of_add_property(/*keys*/ "title", /*label*/ "Title", /*type*/ u_pbt_propertygrid.TYPE_STRING, /*value*/ "Monthly sales")
uo_grid.of_add_category(/*key*/ "page", /*title*/ "Page")
uo_grid.of_add_property(/*keys*/ "page/landscape", /*label*/ "Landscape", /*type*/ u_pbt_propertygrid.TYPE_BOOLEAN, /*value*/ "true")
uo_grid.of_add_property(/*keys*/ "page/margin", /*label*/ "Margin (mm)", /*type*/ u_pbt_propertygrid.TYPE_NUMBER, /*value*/ "12.5")
// The help pane describes the selected property
uo_grid.of_property(/*keys*/ "page/margin").is_description = "Around the printed area, in [b]millimetres[/b]."
// event ue_value_changed of uo_grid : (string as_keys, string as_value)
// The value is already written ; the address says which one
choose case as_keys
case "title"
of_set_report_title(as_value)
case "page/landscape"
of_set_landscape(as_value = "true")
end choose
Un indirizzo per proprietà #
Una proprietà si designa con il suo indirizzo: la sola chiave al primo livello ("title"), la categoria poi la proprietà unite da / sotto una categoria ("page/margin"). Una proprietà espandibile (TYPE_GROUP) contiene a sua volta delle proprietà, aggiunte al suo indirizzo: "appearance/font/size" nel gruppo font della categoria appearance, "margin/left" in un gruppo in cima — e un gruppo può contenerne un altro. Ciò che contiene una proprietà è quindi una categoria (un solo livello) o un gruppo. Una categoria si designa con la sola chiave. Al primo livello, una chiave nomina una cosa sola: una categoria e una proprietà in cima non possono condividerla. Gli eventi portano lo stesso indirizzo, quello che avete scritto.
// A category by its key, a property by its address
uo_grid.of_category(/*key*/ "page").ib_collapsed = true
uo_grid.of_property(/*keys*/ "page/margin").is_value = "15"
// A property held by a group : the address goes through the group
uo_grid.of_property(/*keys*/ "appearance/font/size").is_value = "11"
I tipi di valore #
Il tipo si sceglie una volta, in of_add_property, e dà l'editor della riga. Il valore invece è sempre testo — dato, letto, consegnato dagli eventi — scritto allo stesso modo qualunque sia la lingua della postazione.
| Costante | Editor | Il valore, come testo |
|---|---|---|
TYPE_STRING | Casella di testo | Il testo così com'è |
TYPE_NUMBER | Casella di testo che accetta solo un numero, letto nella lingua di visualizzazione: il suo separatore decimale o un punto, il suo raggruppamento delle migliaia quando è ben formato (1,000 vale mille in inglese, 1.500 millecinquecento in tedesco, 1 234,5 in francese); un'immissione ambigua (1,5 in inglese, 1 2) o che non è un numero è rifiutata: il testo digitato resta, incorniciato di rosso, e il riquadro di guida dice perché (Esc vi rinuncia). is_min, is_max e id_step limitano l'immissione e regolano Su / Giù | Con il punto: "12.5"; "" = vuoto. Conservato cifra per cifra ("1.50" resta "1.50"); un testo che non è un numero è rifiutato |
TYPE_BOOLEAN | Casella di controllo | "true" · "false" |
TYPE_ENUM | Elenco di scelte con i colori del tema; le sue opzioni si aggiungono una per una (of_add_option), il loro testo semplice, senza tag | Il valore dell'opzione scelta, mai il suo testo |
TYPE_COLOR | Campione del colore e selettore di colore; la cella mostra r, g, b. Oltre 16777215, un colore di sistema di PowerBuilder (67108864 Button Face, 553648127 Transparent, 1073741824 Window Background…) appare con il suo nome, con un campione neutro, e il selettore si apre senza colore corrente | Il long RGB scritto come testo: String(RGB(255, 0, 0)) = "255" |
TYPE_DATE | Calendario; la cella mostra la data nel formato della lingua di visualizzazione | "yyyy-mm-dd" : String(Today(), "yyyy-mm-dd") |
TYPE_PASSWORD | Casella di testo mascherata | Il testo in chiaro, mai mostrato né trovato dalla ricerca (anche {x:raw} di un riepilogo resta mascherato) |
TYPE_GROUP | Nessuno: una proprietà espandibile (un carattere, un margine), con una freccia all'inizio della sua etichetta; contiene le proprietà aggiunte al suo indirizzo e si espande con ib_expanded, la sua freccia, un doppio clic sulla sua etichetta o la tastiera. Chiusa quando viene aggiunta | Nessuno da dare ("", ogni altro è rifiutato); letto, il suo riepilogo: quello che scrive is_summary, altrimenti i valori mostrati di ciò che contiene, nascosti saltati, uniti da ; ("Segoe UI; 9; True"); scritto, ignorato |
Un valore che il suo tipo non può contenere è rifiutato — da of_add_property (-5) come da is_value o is_default (il vecchio resta) — e of_get_last_error dice perché: un numero che non lo è, un booleano diverso da true / false / 1 / 0, una data che non è un vero yyyy-mm-dd, un colore che non è un intero a partire da -1, un TYPE_STRING o un TYPE_PASSWORD su più righe (il campo della griglia contiene una riga). "" (nessun valore) è sempre accettato. Un valore di elenco che nessuna opzione offre è accettato, e mostrato così com'è: un elenco può essere caricato dopo il suo valore. Il colore -1 — quello che dà il tema, la convenzione di tutta la libreria — appare «(predefinito)»; un colore di sistema e i true / false di un riepilogo si scrivono nella lingua di visualizzazione.
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_sort | string | "categorized" | La vista: SORT_CATEGORIZED (le proprietà in cima, poi ogni categoria sotto un'intestazione che si comprime) o SORT_ALPHABETICAL (un solo elenco ordinato per etichetta così come appare, senza tag, e senza intestazioni; un gruppo tiene sotto di sé ciò che contiene). Anche i due pulsanti della barra degli strumenti la cambiano: riletta in diretta. Passare all'alfabetica mentre è selezionata un'intestazione svuota la selezione |
ib_toolbar | boolean | true | La barra degli strumenti: le due viste e la casella di ricerca. false la nasconde; is_sort e is_filter restano pilotabili dal codice |
ib_help | boolean | true | Il riquadro di guida, in basso: l'etichetta e la descrizione (is_description) della proprietà selezionata, il titolo di una categoria selezionata |
ii_label_width | integer | 40 | Quota della larghezza data alle etichette, in percentuale, da 15 a 85. L'utente trascina la linea tra etichette e valori: riletta in diretta |
is_filter | string | "" | La ricerca: restano solo le proprietà la cui etichetta, chiave o valore mostrato contiene questo testo, senza distinzione di maiuscole; durante una ricerca, ogni categoria e ogni gruppo che contengono una corrispondenza appaiono aperti, senza perdere il loro stato. L'etichetta si legge così come appare, senza i suoi tag; né il titolo di una categoria né l'indirizzo completo vengono cercati. Durante una ricerca, comprimere o espandere da parte dell'utente non fa nulla; da parte del vostro codice (ib_collapsed, ib_expanded, of_expand_all, of_collapse_all) è registrato, solleva il suo evento e si vede appena la ricerca si svuota; una riga selezionata che la ricerca nasconde lascia la selezione (ue_selection_changed con un indirizzo vuoto). Anche la casella di ricerca la scrive (Esc la svuota): riletta in diretta. "" mostra tutto |
ib_veto_changes | boolean | false | Opt-in: chiedere prima di scrivere un valore dell'utente (solleva ue_value_changing, che può rifiutare: la cella mostra di nuovo il vecchio valore). Un valore scritto dal vostro codice non chiede mai |
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 categoria — n_pbt_propertygrid_category #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_title | string | "" | Titolo dell'intestazione. Accetta il testo formattato con tag. Vuoto, l'intestazione mostra la chiave |
ib_collapsed | boolean | false | true comprime la categoria: la sua intestazione resta, le sue proprietà si nascondono (una selezione che vi si trovava risale all'intestazione). Segue ue_category_toggled, come per un clic sull'intestazione. Durante una ricerca, ogni categoria appare aperta: un clic sull'intestazione non fa nulla, e true impostato dal codice è registrato (segue l'evento, la lettura lo restituisce) e si vede appena la ricerca si svuota. Riletta in diretta |
ib_visible | boolean | true | false toglie la categoria, e tutto ciò che contiene, dalla griglia; mantiene la sua chiave e i suoi valori, che of_values restituisce sempre |
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 dell'intestazione della categoria: la sua selezione lo prende (-1 = quello del componente). Per colorarla tutta, il_back_color / il_text_color |
il_back_color | long | -1 | Sfondo dell'intestazione della categoria, in RGB(r,g,b) (-1 = quello che dà il tema) |
il_text_color | long | -1 | Colore del testo dell'intestazione della categoria (-1 = quello che dà il tema) |
il_back_color_hover | long | -1 | Sfondo dell'intestazione della categoria sotto il puntatore (-1 = quello che dà il tema) |
il_text_color_hover | long | -1 | Colore del testo dell'intestazione della categoria sotto il puntatore (-1 = quello che dà il tema) |
Proprietà di una proprietà — n_pbt_propertygrid_property #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_value | string | quello di of_add_property | Il valore, come testo (vedere I tipi di valore); per un elenco, il valore dell'opzione. Scriverlo non solleva nulla, come SetItem; leggerlo dà il valore corrente, chiunque l'abbia scritto. Un valore che il suo tipo non può contenere (un TYPE_NUMBER che riceve un testo che non è un numero) è rifiutato: il vecchio valore resta, e of_get_last_error della griglia dice perché. Su un gruppo (TYPE_GROUP), la lettura dà il suo riepilogo (vedere is_summary), e la scrittura è ignorata |
is_label | string | quello di of_add_property | Il nome mostrato nella colonna di sinistra; accetta il testo formattato con tag. Vuoto, la riga mostra la chiave, così com'è (mai letta come tag). La vista alfabetica lo ordina, e la ricerca lo legge, così come appare: senza i suoi tag |
is_description | string | "" | Il testo del riquadro di guida mentre la proprietà è selezionata; accetta il testo formattato con tag |
ib_readonly | boolean | false | Mostrata, non modificabile: il valore appare in grigio e nessun editor si apre, né con un clic, né con la tastiera, né con un doppio clic. Un gruppo in sola lettura rende in sola lettura tutto ciò che contiene. Il pulsante … (ib_ellipsis) resta attivo: leggete ib_readonly in ue_ellipsis_clicked per aprire la vostra finestra in sola lettura |
ib_visible | boolean | true | false toglie la riga dalla griglia; la proprietà mantiene il suo indirizzo e il suo valore (of_values lo restituisce sempre). Nascondere un gruppo nasconde ciò che contiene; nascondere la proprietà selezionata svuota la selezione |
ib_ellipsis | boolean | false | Un pulsante … a fine riga: un clic — o Ctrl+Invio sulla riga selezionata — seleziona la riga e solleva ue_ellipsis_clicked, anche su una proprietà in sola lettura, per una vostra finestra di dialogo (un file, un carattere, un elenco preso dal database) |
ib_expanded | boolean | false | Per una proprietà espandibile (TYPE_GROUP): true mostra ciò che contiene, rientrato sotto di essa; false lo nasconde (una selezione che vi si trovava risale al gruppo). Segue ue_property_toggled, come per un clic sulla sua freccia. Durante una ricerca, un gruppo che contiene una corrispondenza appare aperto: la sua freccia non fa nulla, e un valore impostato dal codice è registrato (segue l'evento) e si vede appena la ricerca si svuota. Riletta in diretta; senza effetto sugli altri tipi |
is_summary | string | "" | Per una proprietà espandibile (TYPE_GROUP): come si scrive il suo riepilogo, un modello. {size} è il valore mostrato della sua sotto-proprietà size, {size:raw} il suo valore così come è conservato (una password resta mascherata), {?bold}…{/bold} un pezzo tenuto solo quando bold è attivo (un booleano vero, un valore né vuoto, né false, né 0), {!bold}…{/bold} solo quando non lo è, {{ }} parentesi graffe letterali; una chiave sconosciuta non dà nulla. "{name}, {size} pt{?bold}, bold{/bold}" mostra Segoe UI, 10 pt, bold. Vuoto (predefinito): i valori mostrati, nascosti saltati, uniti da ; . Il riepilogo è testo semplice; segue ogni modifica di ciò che il gruppo contiene; is_value del gruppo lo restituisce |
is_mask | string | "" | Per un TYPE_NUMBER: 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. 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'è; senza effetto sugli altri tipi |
is_format | string | "" | Per un TYPE_NUMBER: il suo formato di visualizzazione, come la cella mostra il numero quando il suo campo non ha la tastiera — stessa sintassi di is_mask, con i suoi letterali: #,##0 "px" mostra 575 px, $#,##0.00 un prezzo, 0.0% un tasso (0,125 mostra 12,5%). Anche il riepilogo di un gruppo e la ricerca lo leggono. Quando il campo prende la tastiera il suo testo diventa quello di is_mask (575), 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: ue_value_changed riporta solo ciò che l'utente ha digitato, il numero nudo. Vuoto (predefinito): la cella mostra il suo is_mask; senza effetto sugli altri tipi |
is_default | string | "" | Il valore predefinito, come testo al pari di is_value. Finché il valore ne differisce, è scritto in grassetto e il riquadro di guida mostra il predefinito; l'utente lo ripristina con Canc sulla riga selezionata o con il pulsante Ripristina (↺) della barra degli strumenti, mostrato solo se almeno una proprietà ha un predefinito — un gesto dell'utente: ue_value_changing se il veto è attivo, poi ue_value_changed. Un valore che il suo tipo non può contenere è rifiutato. Scrivere "" toglie il predefinito: niente più grassetto, nessun predefinito nel riquadro di guida, "" riletto. Senza predefinito, Canc svuota il valore (un booleano resta com'è) |
is_error | string | "" | Un errore della vostra applicazione ("Questo nome esiste già"): il valore è incorniciato di rosso, il riquadro di guida lo dice a parole, così come una descrizione comando, e un lettore di schermo lo annuncia. Scompare quando l'utente modifica la proprietà, o quando scrivete "". Posto in ue_value_changing prima di rifiutare, spiega il rifiuto. Letto, l'errore che la proprietà mostra: il vostro, altrimenti quello della griglia quando un numero digitato è rifiutato (non è un numero, fuori da is_min / is_max) — il testo digitato resta allora sullo schermo per essere corretto, Esc vi rinuncia |
is_min | string | "" | Per un TYPE_NUMBER: il valore più piccolo che l'utente può dare, come numero scritto dal codice ("0", "12.5"); "" = nessun limite. Un numero digitato al di sotto è rifiutato, resta sullo schermo e il riquadro di guida dice perché; Giù si ferma lì. Il vostro codice può sempre scrivere qualsiasi valore. Un testo che non è un numero è rifiutato (of_get_last_error), come un limite che incrocia l'altro (is_min sopra is_max). Ignorata dagli altri tipi |
is_max | string | "" | Per un TYPE_NUMBER: il valore più grande che l'utente può dare; "" = nessun limite. Stesse regole di is_min; Su si ferma lì |
id_step | double | 1 | Per un TYPE_NUMBER: ciò che Su e Giù aggiungono o tolgono mentre il suo campo ha la tastiera, entro is_min / is_max. Ogni passo è un valore dell'utente (ue_value_changed, chiesto prima se il veto è attivo). 0 o meno vale 1. Ignorato dagli altri tipi |
of_is_dirty ( ) → boolean | — | — | TRUE quando il valore differisce dal suo riferimento (vedere of_is_dirty della griglia) |
of_type ( ) → string | — | — | Il tipo dato a of_add_property (una costante TYPE_*). Sola lettura: un tipo si sceglie una volta |
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 della riga della proprietà: la sua selezione e la cornice del suo editor lo prendono (-1 = quello del componente). Per colorarla tutta, il_back_color / il_text_color |
il_back_color | long | -1 | Sfondo della riga della proprietà, in RGB(r,g,b) (-1 = quello che dà il tema) |
il_text_color | long | -1 | Colore del testo della riga della proprietà (-1 = quello che dà il tema) |
il_back_color_hover | long | -1 | Sfondo dell'etichetta della proprietà quando il puntatore è sulla sua riga (-1 = quello che dà il tema) |
il_text_color_hover | long | -1 | Colore dell'etichetta della proprietà quando il puntatore è sulla sua riga (-1 = quello che dà il tema) |
Metodi #
Sul componente #
| Metodo | Ruolo | |
|---|---|---|
of_add_category (string as_key, string as_title) → long | Aggiunge una categoria in fondo: un'intestazione che si comprime, sotto la quale si aggiungono poi le proprietà "chiave/nome". Un titolo vuoto mostra la chiave. Restituisce 0 una volta aggiunta, -5 per una chiave vuota, che contiene / o ` | , o già presa da una categoria o da una proprietà in cima, -2` se il componente non è creato |
of_add_property (string as_keys, string as_label, string as_type, string as_value) → long | Aggiunge una proprietà al suo indirizzo, in fondo a ciò che la contiene: la sua categoria, il suo gruppo ("appearance/font/size", "margin/left") o le proprietà in cima. as_type è una costante TYPE_*, as_value il suo valore come testo ("" per un TYPE_GROUP, che non ne ha). Restituisce 0 una volta aggiunta, -5 per un indirizzo già preso, un genitore che non è né una categoria né un gruppo (o non ancora aggiunto), un livello vuoto ("layout/", "a//b"), una chiave che contiene ` | , un tipo sconosciuto, un valore TYPE_NUMBER che non è un numero come lo scrive il codice (un punto per i decimali, segno ed esponente facoltativi, "" ammesso), un booleano, una data o un colore che non lo sono, un testo o una password su più righe (of_get_last_error dice perché) o un valore dato a un TYPE_GROUP, -2` se il componente non è creato |
of_add_option (string as_keys, string as_value, string as_text) → long | Aggiunge una opzione, in fondo, all'elenco di una proprietà TYPE_ENUM: as_value è ciò che la proprietà contiene (e ciò che dà ue_value_changed), as_text ciò che l'elenco mostra, come testo semplice senza tag ("" mostra il valore). Restituisce 0 una volta aggiunta, -5 per un indirizzo che non è una proprietà elenco, un valore che questa proprietà offre già, o un valore che contiene ` | o / (of_keys_at designa un'opzione con l'indirizzo della proprietà seguito dal suo valore: un livello), -2` se il componente non è creato |
of_remove_option (string as_keys, string as_value) → long | Toglie una opzione dall'elenco di una proprietà TYPE_ENUM, tramite il suo valore. Il valore che la proprietà contiene resta com'è, anche se era quell'opzione. Restituisce 0 una volta tolta, -5 per un indirizzo che non è una proprietà elenco, o un valore che il suo elenco non offre, -2 se il componente non è creato | |
of_clear_options (string as_keys) → long | Toglie tutte le opzioni di una proprietà TYPE_ENUM, per caricare un altro elenco senza perdere la proprietà, il suo handle, la sua selezione né i suoi indicatori. Il valore che contiene resta com'è: scrivete il nuovo in is_value. Restituisce 0 una volta svuotato, -5 per un indirizzo che non è una proprietà elenco, -2 se il componente non è creato | |
of_category (string as_key) → n_pbt_propertygrid_category | Handle di una categoria, tramite la sua chiave (creato al primo accesso): il suo titolo, il suo stato compresso, la sua visibilità e i suoi colori si impostano tramite esso | |
of_property (string as_keys) → n_pbt_propertygrid_property | Handle di una proprietà, tramite il suo indirizzo (creato al primo accesso): il suo valore, la sua etichetta, la sua descrizione, i suoi indicatori e i suoi colori si impostano e si leggono tramite esso. Un indirizzo che questa griglia non ha aggiunto (un errore di battitura) dà un handle che non viene conservato: scriverci non fa nulla, e of_get_last_error dice perché | |
of_remove_property (string as_keys) → long | Toglie una proprietà, e con essa il suo handle; un gruppo se ne va con tutto ciò che contiene. Se era selezionata, ue_selection_changed annuncia che non c'è più selezione. Restituisce 0 una volta tolta, -5 per un indirizzo che questa griglia non ha mai aggiunto, -2 se il componente non è creato | |
of_remove_category (string as_key) → long | Toglie una categoria e tutte le sue proprietà, con i loro handle. Se la selezione vi si trovava, ue_selection_changed annuncia che non ce n'è più. Restituisce 0 una volta tolta, -5 per una chiave che questa griglia non ha mai aggiunto come categoria, -2 se il componente non è creato | |
of_clear ( ) → long | Svuota la griglia: categorie, proprietà, opzioni e handle. La vista, la barra degli strumenti, il riquadro di guida e la ricerca restano come sono (è of_reset che rimette ogni proprietà del componente). Se una riga era selezionata, segue ue_selection_changed con un indirizzo vuoto. Restituisce 0 una volta svuotata, -2 se il componente non è creato | |
of_select_property (string as_keys) → long | Seleziona una riga, come un clic: una proprietà ("page/margin") o l'intestazione di una categoria ("page"). Ciò che contiene la proprietà si apre prima: la sua categoria compressa, i suoi gruppi chiusi (ue_category_toggled, ue_property_toggled) — solo se la riga sarà allora mostrata: una chiamata rifiutata non apre nulla. Segue ue_selection_changed, come per un clic. Restituisce 0 una volta selezionata (o se lo era già), -5 per un indirizzo che questa griglia non ha mai aggiunto o una riga non mostrata (nascosta, fuori dalla ricerca, oltre il limite della demo, un'intestazione nella vista alfabetica), -2 se il componente non è creato | |
of_clear_selection ( ) → long | Non lascia nessuna riga selezionata; segue ue_selection_changed con un indirizzo vuoto. Niente di già selezionato: non viene sollevato nulla. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_selected_key ( ) → string | Indirizzo della riga selezionata, letto in diretta, chiunque l'abbia impostata: "page/margin", "page" per un'intestazione, "" se nessuna. Esattamente ciò che ue_selection_changed vi consegna | |
of_expand_all ( ) → long | Espande tutte le categorie e apre tutti i gruppi; segue ue_category_toggled per ogni categoria che era compressa, ue_property_toggled per ogni gruppo che era chiuso. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_collapse_all ( ) → long | Comprime tutte le categorie e chiude tutti i gruppi; seguono ue_category_toggled e ue_property_toggled per ognuno che cambia. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_dirty_keys (ref string as_keys[]) → long | Riempie as_keys[] con gli indirizzi delle proprietà che differiscono dal loro riferimento, nell'ordine della vista per categoria, e restituisce il loro numero (0 = niente da salvare); ciò che l'utente sta ancora digitando è prima convalidato | |
of_is_dirty ( ) → boolean | TRUE quando almeno una proprietà differisce dal suo riferimento: il valore con cui è stata aggiunta, o ciò che ne hanno fatto of_load o of_reset_update — che l'abbia cambiata l'utente o il vostro codice. Lo stesso nome che sul form. Da non confondere con is_default, il valore mostrato in grassetto: questo dice cosa c'è da salvare. Ciò che l'utente sta ancora digitando è prima convalidato, come per of_values | |
of_load (string as_json) → long | Carica dei valori in una volta: un oggetto JSON per indirizzo, la forma che restituisce of_values — le proprietà in cima, un oggetto per categoria e per gruppo ({"name":"Orders","layout":{"width":800}}) — o chiavi "layout/width". I valori sono scritti in silenzio (nessun ue_value_changed) e diventano il riferimento di of_is_dirty; gli errori mostrati scompaiono. Una proprietà che l'oggetto non nomina mantiene il suo valore, un numero è letto cifra per cifra. Un valore che la griglia non può prendere (nessuna proprietà a quell'indirizzo, un valore che il suo tipo non può contenere) è saltato: il resto è scritto, e of_get_last_error nomina gli indirizzi saltati. Ciò che l'utente stava digitando è abbandonato. Restituisce 0 una volta applicato (anche con valori saltati), -5 per un testo che non è un oggetto JSON, -2 se il componente non è creato | |
of_reset_update ( ) → long | I valori presenti diventano il riferimento: of_is_dirty risponde di nuovo FALSE. Da chiamare una volta salvate le vostre impostazioni, come ResetUpdate di un DataWindow. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_revert ( ) → long | Rimette ogni proprietà al suo valore di riferimento, in silenzio (nessun evento, come un valore scritto dal codice), e toglie gli errori mostrati; ciò che l'utente stava digitando è abbandonato (dopo non viene sollevato nulla): il pulsante Annulla della vostra finestra di impostazioni. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_clear_errors ( ) → long | Toglie tutti gli errori della vostra applicazione (is_error di ogni proprietà). Un numero digitato che la griglia ha rifiutato resta: l'utente deve correggerlo. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_focus_property (string as_keys) → long | Mette la tastiera su una proprietà, come un clic sul suo valore: ciò che la contiene si apre prima (ue_category_toggled, ue_property_toggled), è selezionata (ue_selection_changed) e il suo editor prende la tastiera; un gruppo o una proprietà in sola lettura: la griglia. Restituisce 0, -5 per un indirizzo che questa griglia non ha mai aggiunto o una riga che non può essere mostrata (nascosta, fuori dalla ricerca, oltre il limite della demo), -2 se il componente non è creato | |
of_invalid_keys (ref string as_keys[]) → long | Riempie as_keys[] con gli indirizzi delle proprietà in errore, nell'ordine della vista per categoria, e restituisce il loro numero (0 = la griglia è valida); ciò che l'utente sta ancora digitando è prima convalidato | |
of_is_valid ( ) → boolean | TRUE quando nessuna proprietà mostrata porta un errore: né il vostro (is_error), né quello della griglia (un numero digitato rifiutato: non è un numero, fuori da is_min / is_max). Ciò che l'utente sta ancora digitando è prima convalidato: un testo rifiutato conta. Lo stesso nome che sul form | |
of_validate ( ) → long | Mette la tastiera sulla prima proprietà in errore — la sua categoria e i suoi gruppi si aprono, è selezionata e il suo editor prende la tastiera: ciò che chiama il vostro pulsante OK prima di salvare. Ciò che l'utente sta ancora digitando è prima convalidato. Restituisce il numero di proprietà in errore (0 = la griglia è valida, nulla si muove), -2 se il componente non è creato | |
of_values ( ) → string | Tutti i valori insieme, letti in diretta — ciò che l'utente sta ancora digitando è prima convalidato, come da AcceptText (ue_value_changing se il veto è attivo, poi ue_value_changed) —, in un oggetto JSON: le proprietà in cima, poi ogni categoria come oggetto a sé, ogni gruppo come oggetto dentro ciò che lo contiene — nascoste comprese. Tipizzati: un numero è un numero, scritto cifra per cifra (un decimale di 21 cifre resta esatto), un booleano un booleano, un colore il suo long RGB, il resto testo. Si legge con n_pbt_json, tramite lo stesso indirizzo: lnv_json.of_get_number("page/margin"), lnv_json.of_get_number("appearance/font/size") | |
of_reset ( ) → long | Svuota la griglia (of_clear) poi rimette ogni proprietà del componente al suo valore predefinito: vista per categoria, barra degli strumenti e riquadro di guida visibili, etichette al 40 %, ricerca vuota, domanda disattivata. Restituisce 0 una volta applicato, -2 se il componente non è creato |
Su una categoria e su una proprietà #
Una categoria contiene proprietà; un gruppo (TYPE_GROUP) contiene le sue sotto-proprietà; una proprietà elenco (TYPE_ENUM) contiene le sue opzioni, designate dal loro valore. I tre metodi le percorrono.
| Metodo | Ruolo |
|---|---|
of_count ( ) → long | Numero di proprietà della categoria, nascoste comprese; numero di sotto-proprietà di un gruppo; numero di opzioni di una proprietà elenco (0 per gli altri tipi) |
of_keys_at (long al_index) → string | Indirizzo della proprietà di rango al_index (a partire da 1) — "page/margin", "appearance/font/size" su un gruppo, riutilizzabile così com'è in of_property; su una proprietà elenco, l'indirizzo seguito dal valore dell'opzione. "" fuori dai limiti |
of_has (string as_key) → boolean | La categoria o il gruppo contiene questa proprietà? La proprietà elenco offre questo valore? |
Eventi #
| Event | Attivato quando |
|---|---|
ue_value_changed (string as_keys, string as_value) | L'utente ha cambiato un valore (un'immissione confermata con Invio o lasciando la cella, una casella spuntata con un clic, Spazio o Invio / F2, una scelta in un elenco, un colore, una data, un doppio clic su un'etichetta). as_keys è l'indirizzo della proprietà, as_value il suo nuovo valore come testo; è già scritto. Un valore scritto dal vostro codice (is_value) non solleva nulla, come SetItem: il vostro codice sa cosa ha scritto. Canc o il pulsante Ripristina (ritorno al predefinito) e Su / Giù in un numero sono gesti dell'utente: lo sollevano anch'essi |
ue_value_changing (string as_keys, string as_value) → boolean | Annullabile, posto prima che un valore dell'utente sia scritto, e solo quando ib_veto_changes = true (disattivato per impostazione predefinita). Restituire FALSE rifiuta: la cella mostra di nuovo il vecchio valore, che of_property(as_keys).is_value restituisce ancora durante l'evento. Restituite TRUE per accettare. Ponete of_property(as_keys).is_error prima di rifiutare: l'utente legge perché |
ue_selection_changed (string as_from_keys, string as_keys) | La selezione si è spostata: un clic, la tastiera, o il vostro codice (of_select_property, of_clear_selection — anche un ordine lo solleva, come SelectItem), o la riga selezionata è sparita: compressa nella sua categoria o nel suo gruppo (as_keys è allora quell'intestazione o quel gruppo), tolta, o non più disegnata — nascosta, nascosta dalla ricerca (anche da una compressione fatta durante essa), oltre il limite della demo (as_keys vale allora ""). Una riga è una proprietà ("page/margin") o l'intestazione di una categoria ("page"); as_from_keys è quella lasciata |
ue_category_toggled (string as_key, boolean ab_collapsed) | Una categoria si è compressa (ab_collapsed = TRUE) o espansa: un clic sulla sua intestazione, la tastiera, il suo ib_collapsed impostato dal vostro codice, of_expand_all, of_collapse_all, o of_select_property su una proprietà che contiene |
ue_property_toggled (string as_keys, boolean ab_expanded) | Una proprietà espandibile (TYPE_GROUP) si è aperta (ab_expanded = TRUE) o chiusa: un clic sulla sua freccia, un doppio clic sulla sua etichetta, la tastiera, il suo ib_expanded impostato dal vostro codice, of_expand_all, of_collapse_all, o of_select_property su ciò che contiene. as_keys è l'indirizzo del gruppo |
ue_ellipsis_clicked (string as_keys) | Il pulsante … di una proprietà (ib_ellipsis) è stato cliccato, o è stato premuto Ctrl+Invio sulla sua riga: aprite la vostra finestra di dialogo, poi scrivete il risultato in of_property(as_keys).is_value. Il pulsante resta attivo su una proprietà in sola lettura: of_property(as_keys).ib_readonly dice se aprire la vostra finestra in sola lettura |
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) |
Tastiera e mouse #
| Gesto | Effetto |
|---|---|
| Frecce su / giù, Home / Fine, Pag su / Pag giù | Spostano la selezione da una riga all'altra; Pag su / Pag giù avanzano dell'altezza dell'elenco |
| Frecce sinistra / destra | Su un'intestazione, comprimono o espandono la categoria; su un gruppo, Destra lo apre e Sinistra lo chiude; Destra su un'intestazione o un gruppo già aperti scende alla loro prima riga; su una proprietà, Sinistra risale a ciò che la contiene, il suo gruppo o la sua intestazione (invertite da destra a sinistra). Durante una ricerca, comprimere o espandere non fa nulla, né da tastiera né col mouse |
| Invio, F2 | Entrano nell'editor della proprietà (aprono l'elenco, il selettore di colore o il calendario); un booleano si inverte; su un'intestazione o un gruppo, comprimono o espandono. Senza nulla da fare (nessuna riga, una proprietà in sola lettura), il tasto è lasciato alla finestra: il suo pulsante predefinito |
| Spazio | Spunta o toglie la spunta a un booleano; su un'intestazione o un gruppo, comprime o espande |
| Invio / Esc in un editor | Conferma l'immissione / rimette il vecchio valore; la tastiera torna all'elenco. Esc in un campo non modificato è lasciato alla finestra: il suo pulsante Annulla |
| Ctrl+Invio | Il pulsante … della riga selezionata (ue_ellipsis_clicked) |
| Tab | L'elenco delle proprietà è un solo arresto di tabulazione, qualunque sia la sua dimensione: tra gli editor, solo quelli della riga selezionata prendono Tab; l'elenco che ha la tastiera senza riga selezionata mostra un contorno |
| Doppio clic su un'etichetta | Un booleano si inverte, un elenco passa alla scelta successiva, un gruppo si apre o si chiude |
| Canc | Sulla riga selezionata: ripristina il valore predefinito (is_default) o, senza predefinito, svuota il valore — un testo, un numero, una data, un colore, un elenco; un booleano senza predefinito resta. Anche il pulsante Ripristina (↺) della barra degli strumenti ripristina il predefinito. Un gesto dell'utente: ue_value_changed |
| Backspace, un tasto carattere | Sulla riga selezionata di un testo, un numero o una password: iniziano l'immissione — Backspace apre l'editor, il testo mantenuto e il cursore alla fine (non svuota più il valore); un tasto carattere apre l'editor con quel carattere, come nella finestra delle proprietà di Visual Studio. Su un elenco, un colore, una data o una casella: nulla |
| F4, Alt+Giù | Aprono l'elenco, il selettore di colore o il calendario della riga selezionata, dall'elenco come dal suo pulsante, come un elenco a discesa di Windows |
| Su / Giù in un numero | Aggiungono / tolgono id_step, entro is_min / is_max; ogni passo solleva ue_value_changed |
| Separatore: Sinistra / Destra, Home / Fine | La linea tra etichette e valori prende la tastiera (Tab): Sinistra / Destra la spostano del 5 % (invertite da destra a sinistra), Home / Fine la portano agli estremi (ii_label_width) |
| Trascinare la linea tra etichette e valori | Cambia ii_label_width |
| Casella di ricerca: Esc / Freccia giù o Invio | Svuota la ricerca / passa all'elenco, sulla prima riga se nessuna è selezionata |
Esempi #
Le impostazioni di una finestra #
// The whole grid in one paint
uo_grid.of_set_redraw(/*on*/ false)
// At the top, without a category : the name of the window
uo_grid.of_add_property(/*keys*/ "name", /*label*/ "Name", /*type*/ u_pbt_propertygrid.TYPE_STRING, /*value*/ "Customers")
// A value given by the application : shown, not editable
uo_grid.of_add_category(/*key*/ "identity", /*title*/ "Identity")
uo_grid.of_add_property(/*keys*/ "identity/id", /*label*/ "Id", /*type*/ u_pbt_propertygrid.TYPE_STRING, /*value*/ "W-0042")
uo_grid.of_property(/*keys*/ "identity/id").ib_readonly = true
uo_grid.of_add_property(/*keys*/ "identity/created", /*label*/ "Created on", /*type*/ u_pbt_propertygrid.TYPE_DATE, /*value*/ String(Today(), "yyyy-mm-dd"))
// A number, a check box and a list of choices
uo_grid.of_add_category(/*key*/ "layout", /*title*/ "Layout")
uo_grid.of_add_property(/*keys*/ "layout/width", /*label*/ "Width", /*type*/ u_pbt_propertygrid.TYPE_NUMBER, /*value*/ "1200")
uo_grid.of_add_property(/*keys*/ "layout/resizable", /*label*/ "Resizable", /*type*/ u_pbt_propertygrid.TYPE_BOOLEAN, /*value*/ "true")
uo_grid.of_add_property(/*keys*/ "layout/state", /*label*/ "Window state", /*type*/ u_pbt_propertygrid.TYPE_ENUM, /*value*/ "normal")
uo_grid.of_add_option(/*keys*/ "layout/state", /*value*/ "normal", /*text*/ "Normal")
uo_grid.of_add_option(/*keys*/ "layout/state", /*value*/ "maximized", /*text*/ "Maximized")
// A colour, as its RGB long written out
uo_grid.of_add_category(/*key*/ "appearance", /*title*/ "Appearance")
uo_grid.of_add_property(/*keys*/ "appearance/back_color", /*label*/ "Back colour", /*type*/ u_pbt_propertygrid.TYPE_COLOR, /*value*/ String(RGB(/*red*/ 240, /*green*/ 244, /*blue*/ 250)))
// One single paint, then the first value to edit
uo_grid.of_set_redraw(/*on*/ true)
uo_grid.of_select_property(/*keys*/ "layout/width")
Un ispettore che applica ogni modifica #
// event ue_value_changed of uo_grid : (string as_keys, string as_value)
// The address says which setting of the window the user changed
choose case as_keys
case "name"
w_customers.title = as_value
case "layout/width"
w_customers.width = Long(as_value)
case "layout/resizable"
w_customers.resizable = (as_value = "true")
case "appearance/back_color"
w_customers.backcolor = Long(as_value)
end choose
Il pulsante …: una vostra finestra di dialogo #
// The icon : typed by hand, or chosen through the "..." button
uo_grid.of_add_property(/*keys*/ "appearance/icon", /*label*/ "Icon", /*type*/ u_pbt_propertygrid.TYPE_STRING, /*value*/ "img\customers.png")
uo_grid.of_property(/*keys*/ "appearance/icon").ib_ellipsis = true
// event ue_ellipsis_clicked of uo_grid : (string as_keys)
// Local variables
string ls_path, ls_file
constant unsignedlong OFN_EXPLORER = 2
constant unsignedlong OFN_NOCHANGEDIR = 64
// The application opens its own dialog - in the Explorer style, without moving the current folder of the application - then writes the result (this raises nothing)
if GetFileOpenName("Icon", ls_path, ls_file, "png", "Pictures (*.png),*.png", /*initdir*/ "", OFN_EXPLORER + OFN_NOCHANGEDIR) = 1 then
uo_grid.of_property(/*keys*/ as_keys).is_value = ls_path
end if
Convalidare prima di scrivere #
// The question is OFF by default : turn it on to be able to refuse a value
uo_grid.ib_veto_changes = true
// event ue_value_changing of uo_grid : (string as_keys, string as_value)
// FALSE refuses : the cell shows the old value again. is_error, set before, tells
// the user why : the help pane shows it until the value is edited again
choose case as_keys
case "layout/width"
if Long(as_value) < 200 or Long(as_value) > 4000 then
uo_grid.of_property(/*keys*/ as_keys).is_error = "Between 200 and 4000 pixels."
return false
end if
case "name"
if Trim(as_value) = "" then
uo_grid.of_property(/*keys*/ as_keys).is_error = "A window needs a name."
return false
end if
end choose
// Any other value is accepted
return true
Valori predefiniti, modifiche e Annulla #
Due nozioni distinte, come nella finestra delle proprietà di Visual Studio e in un DataWindow: il valore predefinito (is_default) dice cosa si scrive in grassetto e cosa Canc ripristina; il riferimento (of_load, of_reset_update) dice cosa c'è da salvare (of_is_dirty, of_dirty_keys) e cosa Annulla rimette (of_revert).
// The defaults of the window : a value that differs is written in bold
uo_grid.of_property(/*keys*/ "layout/width").is_default = "800"
uo_grid.of_property(/*keys*/ "layout/state").is_default = "normal"
// The width the user may type, and what Up / Down add or take
uo_grid.of_property(/*keys*/ "layout/width").is_min = "200"
uo_grid.of_property(/*keys*/ "layout/width").is_max = "4000"
uo_grid.of_property(/*keys*/ "layout/width").id_step = 50
// The saved settings, read back : they become the reference
uo_grid.of_load(/*json*/ is_saved_settings)
// OK : every value right first - otherwise the keyboard goes to the first error
if uo_grid.of_validate() > 0 then return
// Save only what changed (what the user is still typing counts too), then the screen becomes the reference
if uo_grid.of_is_dirty() then
is_saved_settings = uo_grid.of_values()
uo_grid.of_reset_update()
end if
// Cancel : every value back to the settings loaded
uo_grid.of_revert()
Una proprietà espandibile #
Un carattere sta in una riga chiusa, che riassume i suoi valori, e si apre sulle sue tre proprietà. Senza modello il riepilogo è Segoe UI; 9; False; is_summary lo scrive a modo vostro: Segoe UI, 9 pt, poi , bold finché Bold è spuntato.
// A group in the category appearance : the font, closed when it is added
uo_grid.of_add_category(/*key*/ "appearance", /*title*/ "Appearance")
uo_grid.of_add_property(/*keys*/ "appearance/font", /*label*/ "Font", /*type*/ u_pbt_propertygrid.TYPE_GROUP, /*value*/ "")
// What it holds is added at its address
uo_grid.of_add_property(/*keys*/ "appearance/font/name", /*label*/ "Name", /*type*/ u_pbt_propertygrid.TYPE_STRING, /*value*/ "Segoe UI")
uo_grid.of_add_property(/*keys*/ "appearance/font/size", /*label*/ "Size", /*type*/ u_pbt_propertygrid.TYPE_NUMBER, /*value*/ "9")
uo_grid.of_add_property(/*keys*/ "appearance/font/bold", /*label*/ "Bold", /*type*/ u_pbt_propertygrid.TYPE_BOOLEAN, /*value*/ "false")
// Its summary, written your way : "Segoe UI, 9 pt", then ", bold" while Bold is checked
uo_grid.of_property(/*keys*/ "appearance/font").is_summary = "{name}, {size} pt{?bold}, bold{/bold}"
// Open it : its three values show under it
uo_grid.of_property(/*keys*/ "appearance/font").ib_expanded = true
// Local variables
n_pbt_json lnv_json
double ld_size
// The group is an object in the values : the same address reads its size
lnv_json.of_load(/*json*/ uo_grid.of_values())
ld_size = lnv_json.of_get_number(/*path*/ "appearance/font/size")
// event ue_property_toggled of uo_grid : (string as_keys, boolean ab_expanded)
// The group that opened or closed, by its address
if ab_expanded then
lb_log.AddItem(as_keys + " opened")
else
lb_log.AddItem(as_keys + " closed")
end if
Leggere tutti i valori insieme #
// Local variables
n_pbt_json lnv_json
string ls_state
// Every value, typed, read along the same addresses as the grid
lnv_json.of_load(/*json*/ uo_grid.of_values())
w_customers.title = lnv_json.of_get_string(/*path*/ "name")
w_customers.width = lnv_json.of_get_number(/*path*/ "layout/width")
w_customers.resizable = lnv_json.of_get_boolean(/*path*/ "layout/resizable")
// One value alone : always text
ls_state = uo_grid.of_property(/*keys*/ "layout/state").is_value
Viste, ricerca e larghezza delle etichette #
// One flat list sorted by label, instead of the categories
uo_grid.is_sort = u_pbt_propertygrid.SORT_ALPHABETICAL
// Keep only what speaks of a colour
uo_grid.is_filter = "colour"
// The labels take half of the width, and the help pane goes away
uo_grid.ii_label_width = 50
uo_grid.ib_help = false
Percorrere una categoria #
// Local variables
n_pbt_propertygrid_category lnv_layout
string ls_keys
long ll_i
// Each property of the category, by its full address
lnv_layout = uo_grid.of_category(/*key*/ "layout")
for ll_i = 1 to lnv_layout.of_count()
ls_keys = lnv_layout.of_keys_at(/*index*/ ll_i)
lb_values.AddItem(ls_keys + " = " + uo_grid.of_property(/*keys*/ ls_keys).is_value)
next
Ricaricare un elenco di scelte #
// The states offered depend on the kind of window : the old choices go,
// the property keeps its handle, its flags and its place
uo_grid.of_clear_options(/*keys*/ "layout/state")
// The new choices, then the value to show among them
uo_grid.of_add_option(/*keys*/ "layout/state", /*value*/ "docked", /*text*/ "Docked")
uo_grid.of_add_option(/*keys*/ "layout/state", /*value*/ "floating", /*text*/ "Floating")
uo_grid.of_property(/*keys*/ "layout/state").is_value = "docked"
Buone pratiche #
- Un valore è un testo: un numero si scrive con il punto (
"12.5"), un booleano"true"/"false", un coloreString(RGB(…)), una data"yyyy-mm-dd"— qualunque sia la lingua della postazione. Per valori tipizzati,of_valuesen_pbt_json. - Il codice scrive in silenzio, l'utente avvisa:
is_valuenon solleva nulla,ue_value_changedparla solo dei gesti dell'utente. Un solo punto applica quindi le modifiche, come nell'esempio dell'ispettore. - Descrivete: una frase in
is_descriptionvale più di un'etichetta lunghissima — il riquadro di guida la mostra quando l'utente ne ha bisogno. ib_readonlypiuttosto cheib_visible = falseper un valore che l'utente deve vedere senza poterlo cambiare.- Modalità dimostrativa: senza chiave, la griglia disegna 8 righe di proprietà, contate nell'ordine dello schermo (vista per categoria): un gruppo chiuso conta per una riga, e le sue sotto-proprietà — che il suo riepilogo mostra — contano solo quando il gruppo è aperto; le intestazioni di categoria non contano. Il resto rimane in memoria e in
of_values, ma né un riepilogo né la ricerca ne leggono il valore (vedere Licenza).
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.