Mediante un Viewer di tipo Grid è possibile costruire layout altamente specializzati per la visualizzazione di:
✓ pulsantiere,
✓ monitor di controllo,
✓ cruscotti informativi,
✓ batterie di filtri,
✓ pannelli di comando.
Il requisito minimo per la creazione di questi particolari layout, è quello di impostare la Band Property RowLayoutStyle a Column Layout. Questa proprietà consente di specificare la modalità in cui le colonne di una Band possono essere combinate tra loro. Essa può assumere i valori:
✓ None permette di combinare le colonne senza snaturare l'aspetto tabellare della Grid;
✓ ColumnLayout consente di combinare le colonne, ignorandone eventuali raggruppamenti, in svariati modi fino a snaturare l'aspetto tabellare della Grid;
✓ GroupLayout simile a ColumnLayout, ma tiene conto di eventuali raggruppamenti di colonne.
Oltre la creazione di cruscotti e pulsantiere, il Column Layout può essere utilizzato per realizzare altri template grafici personalizzati, quali tabelle con record suddivisi su più righe. |
Formalmente, ogni cruscotto o pulsantiera è un Viewer di tipo Grid associato ad una particolare tabella del Model sottostante. Tale tabella deve essere:
✓ priva di record;
✓ con Edit Mode impostato a Simple o Full;
✓ contenente tanti campi quanti sono i pulsanti e/o i controlli (e.g. drop-down list e value list) da visualizzare.
Per trasformare una Grid in un cruscotto è necessario impostare:
✓ le Grid Property UseAppStyling e HeaderStyle, rispettivamente, a False e Standard per rendere effettive tutte le impostazioni grafiche;
✓ la Band Property RowSelector a False, per eliminare il selettore dei record;
✓ la Band Property RowLayoutLabelStyle a WithCellData, affinché celle e rispettive intestazioni costituiscano un unico blocco;
✓ la Band Property RowLayoutLabelPosition per definire la posizione delle intestazioni di colonna rispetto alla corrispondente cella;
✓ le Column Property della classe RowLayoutColumnInfo, con cui creare interfacce altamente personalizzate.
La Band Property RowLayoutLabelStyle specifica la modalità di visualizzazione congiunta di celle e relative intestazioni. Essa può assumere i valori:
✓ Separate visualizza le intestazioni di colonna in un'area separata dai record in cima alla Band corrente;
✓ WithCellData visualizza in ogni cella della Band corrente anche la corrispondente intestazione di colonna.
La Band Property RowLayoutLabelPosition specifica le posizioni reciproche di celle e relative intestazioni. Essa può assumere i valori:
✓ None nasconde le intestazioni ma visualizza le corrispondenti celle;
✓ LabelOnly nasconde le celle ma visualizza le intestazioni corrispondenti;
✓ Bottom visualizza l'intestazione di colonna alla base della cella corrispondente;
✓ Top visualizza l'intestazione di colonna in cima alla cella corrispondente;
✓ Left visualizza l'intestazione di colonna a sinistra della cella corrispondente;
✓ Left visualizza l'intestazione di colonna a destra della cella corrispondente;
✓ Default coincide con Top.
Le principali proprietà della classe RowLayoutColumnInfo sono:
✓ OriginX specifica la distanza in celle di un blocco Cella-Intestazione, in orizzontale a partire dall’angolo in alto a sinistra della Band;
✓ OriginY specifica la distanza in celle di un blocco Cella-Intestazione, in verticale a partire dall’angolo in alto a sinistra della Band;
✓ CellInsets definisce lo spessore in pixel dei contorni delle celle;
✓ LabelInsets definisce lo spessore in pixel dei contorni delle intestazioni;
✓ SpanX imposta l’ampiezza in blocchi Cella-Intestazione di un singolo blocco, in orizzontale;
✓ SpanY imposta l’ampiezza in blocchi Cella-Intestazione di un singolo blocco, in verticale;
✓ LabelSpan specifica quale porzione di SpanX o SpanY riservare all’intestazione della cella.
Nell'impostare le proprietà OriginX, OriginY, SpanX e SpanY è necessario tener presente che ogni blocco Cella-Intestazione vale 2 sia in orizzontale sia in verticale. Inoltre il valore di default -1 per OriginX e OriginY consente di posizionare ogni blocco Cella-Intestazione nella prima posizione disponibile. |
Nel caso di export in Excel, l'uso della property SpanX può provocare la generazione di merged cells il cui contenuto potrebbe non essere visibile. |
Infine, dopo aver configurato l'interfaccia del cruscotto è necessario definire controlli e pulsanti che lo compongono.
Per definire controlli di tipo drop-down list e value list è necessario:
✓ impostare a True la Column Property AllowUpdate per i campi corrispondenti ai controlli;
✓ associare drop-down list e value list alle corrispondenti celle del cruscotto, come descritto nei capitoli dedicati (Le drop-down list e Le value list).
Per definire pulsanti invece è necessario:
✓ impostare a Button la Column Property Style per i campi associati a pulsanti;
✓ impostare a True la Column Property DisableActiveItemBorder per i campi associati a pulsanti;
✓ specificare la stringa da visualizzare sul pulsante mediante la Column Property NullText.