Metodo th_struct

Impostazione delle colonne

th_struct è il metodo principale che definisce non solo quali colonne saranno contenute nella lista, ma in fase di definizione di ciascuna colonna è possibile attribuire delle proprietà che ne caratterizzano la visualizzazione ed il comportamento.

Vediamo ora un semplice esempio di definizione di th_struct:

def th_struct(self,struct):
  r = struct.view().rows()
  r.fieldcell('ragione_sociale')
  r.fieldcell('indirizzo')
  r.fieldcell('comune_id')
  r.fieldcell('provincia')
  r.fieldcell('tot_fatturato',format='#,###.00')

Riceve una struct che dovrà essere popolata con le colonne che saranno visualizzate nella view.

È importante sottolineare che la struttura della view è sostanzialmente la stessa, sia che si tratti di una view di una tabella fisica, sia che si tratti di una view ad esempio di una baggrid. Gli elementi cell e fieldcell vengono utilizzate per definire le colonne: fieldcell si usa per colonne che sono definite nel model di una table del database, mentre cell viene invece usato se la colonna non esiste nel database ma solo nel datastore o se viene definita estemporaneamente come formula.

In fieldcell le proprietà della colonna vengono prese direttamente dal model e non sarà necessario specificarle, tuttavia si potrà intervenire con dei parametri per modificarne l’aspetto visivo, come larghezza della colonna, allineamento ecc. Ovviamente il suo valore del parametro field dovrà coincidere con il nome della colonna usato nel model.

Aggiungendo una colonna che sia foreign_key di un’altra tabella, sarà automaticamente visualizzata la descrizione usando l’attributo caption_field della colonna in relazione. È inoltre possibile aggiungere nella griglia colonne prelevate da altre tabelle in relazione con la consueta sintassi prevista:

r.fieldcell('@fatture.protocollo')

In caso di utilizzo di cell, invece, il valore di field dovrà coincidere con la key usata nel datastore della stampa o della baggrid in modo tale che sia sempre rispettata la corrispondenza tra struct e datastore.

In una view relativa ad una tabella fisica è comunque possibile definire delle colonne di tipo cell, quindi non legate alla struttura fisica della tabella, ma definite come colonne calcolate (vedi Metodo th_applymethod ).

Suggerimento

Internamente, Genropy utilizza tutte colonne di tipo cell, in tal senso l’uso di fieldcell costituisce una sorta di scorciatoia in quanto ci evita di dover definire alcune delle altre proprietà (come dtype, name_short e name_long) in quanto vengono ereditate direttamente dal model. Qualora in fase di definizione di un fieldcell fossero attribuite delle proprietà specifiche, come ad esempio name_long, questa prevarrebbe rispetto alla stessa proprietà definita nel model.

Parametri principali delle colonne

All’interno di cell e fieldcell possiamo andare ad utilizzare tutta una serie di parametri che andranno a definire le modalità di comportamento delle colonne della nostra view:

width : consente di definire la larghezza della colonna espressa in pixel o em

align : consente di allineare il contenuto a sinistra (left, default o center o right)

name : è il titolo della colonna che voglio mostrare nell’header, se sto usando fieldcell il suo valore di default è letto dagli attributi name_short e name_long della colonna corrispondente, nella definizione del model.

format : è una stringa che rappresenta il pattern di formattazione che voglio dare ad un dato di tipo data o numerico. Ad esempio #,###.00

dtype : è il tipo di dato nella solita codifica. Se si usa ``fieldcell`` non serve perché il dtype è ricavato dal model.

zoom : se impostato a True, consente di poter selezionare un nuovo record (in base al campo su cui è impostato) sulla finestra di gestione della tabella stessa

totalize : è un valore booleano che si può attribuire ad una colonna numerica se si desidera che venga calcolato e visualizzato il suo totale nel grid_footer

columnset : ha uno scopo di esclusiva organizzazione visiva dei dati e ne consente una maggiore leggibilità, vediamone il risultato e successivamente il suo utilizzo:

sort : consente di di definire un criterio di ordinamento (a =ascendente, d =discendente) per la colonna stessa.

../../_images/columnset.png
def th_struct(self,struct):
  r = struct.view().rows()
  r.fieldcell('ragione_sociale', width='20em')

  indirizzo = r.columnset('colset_indirizzo', name='indirizzo')
  indirizzo.fieldcell('indirizzo', width='10em')
  indirizzo.fieldcell('provincia', width='3em', align='center')

  riferimenti = r.columnset('colset_riferimenti', name='riferimenti')
  riferimenti.fieldcell('telefono', width='7em')
  riferimenti.fieldcell('cellulare', width='5em')

come si può vedere, basterà definire un columnset con un nome e associarlo ad una row:

indirizzo = r.columnset(...)

e successivamente aggiungere le row (indirizzo, provincia) tramite il metodo fieldcell, non alla row ma al nuovo oggetto columnset.

indirizzo.fieldcell('indirizzo', width='10em')
indirizzo.fieldcell('provincia', width='3em', align='center')

per le risorse di stampa

subtotal : è un valore booleano. Se True il sistema ordinerà le righe in base a questa colonna ed ogni spezzamento creerà una riga di subtotale

subtotal_caption : indica l’etichetta che la riga di subtotale mostrata in stampa

Esempio di columnset su gridview:

../../_images/columnset.png

Parameters:

Parameter name Type Description
width T Consente di definire l’eventuale larghezza di una colonna, il valore può essere espresso in px o em.
name T è il titolo della colonna che voglio mostrare nell’header, se sto usando fieldcell il suo valore di default è letto dagli attributi name_short e name_long della colonna corrispondente, nella definizione del model.
align T consente di allineare il contenuto a sinistra (left, default o center o right)
format T è una stringa che rappresenta il pattern di formattazione che voglio dare ad un dato di tipo data o numerico. Ad esempio #,###.00
dtype T è il tipo di dato nella solita codifica. Se si usa fieldcell non serve perché il dtype è ricavato dal model.
columnset T ha uno scopo di esclusiva organizzazione visiva e/o logica dei dati e ne consente una maggiore leggibilità in quanto le colonne appartenenti allo stesso columnset vengono visualmente raggruppate sotto una sorta di cappelletto colorato
zoom T Consente di poter visuallizare direttamente la form di gestione dei dati della tabella collegata. Esempio: se su Sandbox, aggiungessimo la propretà zoom=TRue alla colonna cliente della grid delle fatture, questo ci consentirebbe di poter aprire direttamente il cliente con shift+click sulla colonna del cliente. Vedere anche il parametro zoom_mode
zoom_mode T Il parametro funziona se zoom=True (vedere parametro relativo) e consente in questo caso di poter definire la modalità di visualizzazione della form stessa. Con zoom_mode=”page” verrà aperta una nuova finestra a tutto schermo.
sort T Permette di stabilire il criterio di ordinamento (a=Ascendente, d=discendente) della griglia basato sulla colonna in cui viene dichiarato. Questo nuovo parametro ha la precedenza rispetto all’ordinamento eventualmente definito nel metodo th_order che sarà nelle versioni future deprecato anche se continuerà a funzionare nei progetti precedentemente creati

Autore della sezione: Valter Vettorello