Griglie Evolute - Colonne e Definizioni¶
Gestione colonne griglia¶
Dalla maschera di gestione dei controlli, se mi posiziono su un controllo di tipo "Griglia" si accenderà il tasto funzione per aprire la configurazione griglia.
[Immagine: tasto funzione configurazione griglia]
Proprietà griglia (Gridsist)¶
[Immagine: maschera Gridsist]
Questa funzione permette di: - Definire le colonne di una griglia con tutte le caratteristiche necessarie - Riordinare le colonne in base a come si vogliono far vedere all'utente - Esportare una griglia in files da inviare ad un cliente - Importare una griglia esportata - Clonare una griglia da una già esistente
Definizione colonne griglia E' possibile inserire: - Inserire nuove colonne (Ctrl-A) - Modificare colonne esistenti (agendo sulle singole celle)
Definizione colonne griglia¶
Descrizione di tutte le proprietà di una colonna griglia:
Proprietà "Col ID"¶
Contiene l'id assegnato ad una colonna, è univoco e non modificabile. Viene indicato per tutte le griglie, sia quelle read-only che quelle modificabili. Se indicato sulle colonne modificabili, per una griglia modificabili, attiva la generazione di una serie di dati e routines di gestione specifica.
[Immagine: proprietà Col ID]
Proprietà "Pic dato"¶
In una griglia modificabile, se si indica questo campo significa che la colonna deve avere associato un dato. In questo campo si indica la picture del dato stesso, ovvero il tipo di dato e la dimensione. Se una colonna ha un "Col ID" significativo ma non ha nessun "picture dato", significa che è un campo gruppo destinato a contenere altre colonne elementari, che dovranno essere definite nella griglia immediatamente sotto a questa, con un numero di livello superiore.
[Immagine: proprietà Pic dato]
Proprietà "Descrizione"¶
Breve descrizione del contenuto della colonna. Si deve indicare per tutte le colonne. E' utile sia per riconoscere velocemente il contenuto della colonna, anche in fase di configurazione da parte dell' utente: questa è la descrizione che egli vedrà, quindi è importante impostare una descrizione breve ma chiara. Con l' introduzione delle griglie modificabili, potrebbe essere necessario aggiungere alla griglia alcune colonne necessarie solo per la definizione di un' informazione utile al programmatore. Se queste colonne vengono rese visibili nella griglia (vedi Proprietà "Pic.dato") saranno visibili anche dall' utente che configura da solo la griglia. Quindi è bene evidenziare che queste colonne hanno uno scopo prevalentemente interno, usando un prefisso ad hoc che per convenzione potremmo indicare come "(WRK)". Ad esempio:
[Immagine: esempio descrizione con prefisso WRK]
Proprietà "Validazione"¶
Questo campo indica al sistema come comportarsi prima di entrare nell' accept della cella. Può contenere 3 valori: - " ": Nessuna operazione particolare - "-": indica una colonna che non è mai modificabile - "C": Colonna con validazione "custom".
Validazione "-"¶
In questo caso non sarà mai possibile entrare in modifica di una cella nella colonna. Le colonne di questo tipo verranno tutte evidenziate con il colore EXT-COLOR-CELL-RO.
Validazione "C"¶
In questo caso, prima di entrare nell'accept della cella il sistema eseguirà una perform che deve essere presente nel sorgente del programma.
Questa perform avrà il seguente nome:
Z-nomegrid-'col-id'-BE-EP.
e sarà obbligatoria; se non serve è bene cambiare il valore della proprietà in " ".
Quando è necessario? - Quando, prima della modifica del campo, è necessario fare controlli particolari, e/o modificare valori a campi correlati. - Quando la modifica della cella dipende da condizioni variabili. In tal caso nella routine occorre impostare la variabile w-cell-accept-ok a "N" se la cella non è modificabile.
Ad esempio: Nel programma COGZD1, griglia "grid-fasi", la colonna "Uscita il" con id "cns-data" contiene la data di uscita intermedia prevista per un lavoro. E' possibile modificarla solo se il campo "Prova paziente" o il campo "Controllo interno" sono spuntati. Quindi la routine di controllo ingresso alla cella sarà la seguente:
*----------------------------------------------------------------**
* BEGIN-ENTRY: entry point colonne personalizzate
*----------------------------------------------------------------**
z-grid-fasi-cns-data-be-ep.
if (tm-fl-check-ext (k-be) = "N" and
tm-fl-check-int (k-be) = "N" )
move "N" to w-cell-accept-ok
end-if
.
Attenzione!!! Come si può osservare nell'esempio, la routine fa riferimento alla riga corrente della griglia usando l'indice K-BE, e non l'indice specifico della griglia.
Colore celle modificabili Le singole celle rese non modificabili verranno evidenziate con il colore EXT-COLOR-CELL-RO. Se invece la cella ritorna modificabile assume il colore di default precedente.
Validazione griglia generica¶
Quando almeno una colonna nella griglia assume la validazione "C", il sistema richiederà l' esecuzione di una routine di validazione generica per tutte le colonne della griglia.
Questa perform avrà il seguente nome:
Z-nomegrid--BE-EP.
Come usarla? Anche se non necessaria, va comunque creata: la si può eventualmente lasciare vuota. Altrimenti, si può usare per evitare la modifica di righe che per condizioni particolari sono totalmente non modificabili.
Esempio 1 Nel programma COGZD1, la griglia "grid-fasi" contiene l'elenco delle fasi da eseguire su una commessa. Se tali fasi sono già eseguite non sono più modificabili. Nel programma esiste una variabile chiamata TM-PRIMA-LIBERA che contiene l'indice della prima riga modificabile. Di conseguenza la routine generale di accesso alla modifica riga sarà:
*----------------------------------------------------------------**
* BEGIN-ENTRY: Qui decido se la riga corrente e' modificabile
*----------------------------------------------------------------**
z-grid-fasi-be-ep.
if k-be < tm-prima-libera
move "Modifiche non permesse su questa riga" to wb-msg
perform vbx-msg-error
move "N" to w-cell-accept-ok
end-if
.
Attenzione!!! Come si può osservare nell'esempio, la routine fa riferimento alla riga corrente della griglia usando l'indice K-BE, e non l'indice specifico della griglia. Per il momento non cambio il colore di queste righe, poichè generalmente tali righe vengono evidenziate usando l'apposita proprietà della griglia "Colore righe griglie", vedi Proprietà specifiche griglia.
Esempio 2 Nel programma COGE29, la griglia "grid-det" contiene l'elenco delle condizioni di sconto per un cliente. Per gestire la cancellazione di una riga viene impostato "C" nel campo TM-R-FL-AGG relativo alla riga stessa. In questo caso i campi non sono modificabili.
*---------------------------------------------------------------
* Gestione eventi speciali sulla griglia GRID-DET
*---------------------------------------------------------------
z-grid-det-be-ep.
evaluate event-type
*---------------------------------------------------------------
* Il right-click attiva il menu pop-up
*---------------------------------------------------------------
when msg-grid-rbutton-down
call "W$MENU" using wmenu-popup,
grid-det-menu-handle
giving myResult
end-evaluate
** Validazione generale riga
if tm-r-fl-agg (k-be) = "C"
move "N" to w-cell-accept-ok
end-if
.
In questo esempio, questa routine viene usata anche per la gestione del menu contestuale sulla griglia (è per la modalità di gestione evoluta della griglia).
Estratto da documentazione interna ClickUp