DEFCOLLECTIONGRID
Consente di definire il controllo griglia da collezione all'interno di una videata.
La fonte dati della griglia è la collezione di oggetti specificata nel parametro COLLEZIONEDATI. Dalla classe di riferimento della collezione dati viene derivata la definizione delle colonne ed il numero di righe da visualizzare.
Una qualsiasi modifica ai dati contenuti nella collezione si riflette automaticamente sul controllo video senza necessità di alcun tipo di ulteriori operazioni.
I metodi sono richiamabili nella callback specificata nel parametro ONLOAD della @DEFVID per le impostazioni della prima visualizzazione oppure in una qualsiasi azione per modificare le impostazioni in un secondo momento.
- Nel caso di operazioni massive è possibile sospendere l'aggiornamento video utilizzando la specifica @SUSPENDVIDREFRESH.
- La definizione delle colonne può essere ulteriormente specializzata attraverso il parametro COLLEZIONECOLONNE popolando la collezione d'ambiente di tipo BC_VID_GRID_COL.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| NOME | Intero | ||||
| RET | |||||
| POS | |||||
| DIM | |||||
| OGGETTOCORRENTE | Classe | ||||
| ID | Stringa | ||||
| COLLEZIONEDATI | Collezione | ||||
| COLLEZIONECOLONNE | Collezione di BC_VID_GRID_COL | ||||
| COLLEZIONETOTALI | Collezione di BC_VID_GRID_TOT | 33.0 | |||
| TOOLBAR | |||||
| IMPOSTAATTRIBUTI | Azione | 31.5 | |||
| INIZIALIZZAZIONE | Azione | ||||
| RICERCA | Azione | ||||
| AUTOCOMPLETAMENTO | Azione | 32.4 | |||
| DEFINIZIONEQUERY | Azione | 33.1 | |||
| INRIGA | Azione | ||||
| OUTRIGA | Azione | ||||
| AZIONECLICK | Azione | ||||
| AZIONEMOUSEOVER | Azione | 32.0 | |||
| IDMENU | Stringa | ||||
| DRAG | |||||
| DROP | |||||
| COMPRIMIRAGGRUPPAMENTI | |||||
| PREVALIDAZIONE | Azione | ||||
| POSTDERIVAZIONEDATI | Azione | ||||
| VALIDAZIONEDATI | |||||
| MULTISELEZIONE | |||||
| PAGINAZIONE | Numerico | 32.0 | |||
| GRID | |||||
| STACK | |||||
| EXPANDER | |||||
| DOCK | |||||
| PERSONALIZZABILE | Intero | ||||
| LINKTO | |||||
| AZIONEINVIO | |||||
| BLOCCALOOKUP | Booleano |
RET
Coordinate della cella del reticolo da associare al controllo.
Queste informazioni hanno lo scopo di inserire il controllo nella logica di gestione degli spostamenti sulla videata.
POS
Posizionamento del controllo.
Consente di indicare la riga e la colonna. Per entrambi è possibile specificare l'unità di misura.
POS[RigaVid [UnitàMisura], ColonnaVid [UnitàMisura]]
L'unità di misura può essere: 'C' per il posizionamento a caratteri e 'P' per il posizionamento in pixel. L'indicazione è opzionale, se omesso si assume 'C' come default.
DIM
Dimensione del controllo.
Consente di indicare l'altezza e la larghezza. Per entrambi è possibile specificare l'unità di misura.
DIM[Altezza [UnitàMisura], Larghezza [UnitàMisura]]
L'unità di misura può essere: 'C' per il posizionamento a caratteri e 'P' per il posizionamento in pixel. L'indicazione è opzionale, se omesso si assume 'C' come default.
OGGETTOCORRENTE
Attributo di definizione della variabile contenente il riferimento all'oggetto corrente.
L'oggetto indicato viene valorizzato nel momento in cui una riga della griglia prende il fuoco ed quindi disponibile per tutte le callback di gestione della griglia stessa.
ID
Definisce la variabile o la costante di programma che contiene l'identificatore univoco del controllo.
Viene utilizzato dall'ambiente per gestire le personalizzazioni effettuate durante l'esecuzione del programma.
COLLEZIONEDATI
Definizione del legame tra la griglia ed una collezione di dati precedentemente definita.
In questo modo si crea un'associazione a due vie tra griglia e collezione. Questo permette di avere la griglia aggiornata automaticamente ad ogni modifica sulla collezione e la collezione aggiornata automaticamente ad ogni modifica in griglia.
COLLEZIONECOLONNE
Definizione delle colonne della griglia, specializzandole rispetto alla classe di riferimento della collezione dati associata alla griglia.
Deve essere una collezione di oggetti della classe BC_VID_GRID_COL.
COLLEZIONETOTALI
Elenco totali della griglia
TOOLBAR
Identificativo della toolbar di videata, definita precedentemente tramite specifica @DEFTOOLBAR.
IMPOSTAATTRIBUTI
Callback per il richiamo dell'impostazione degli attributi video alla prima visualizzazione della singola riga.
La callback viene richiamata, una sola volta a riga, appena questa viene visualizzata dalla griglia.
Da utilizzare in quelle griglie con grosse mole di dati, il cui ImpostaAttributiVideo() complessivo potrebbe compromettere la velocità di apertura della videata.
INIZIALIZZAZIONE
Callback per l'inizializzazione di un nuovo oggetto nella collezione dati.
Viene richiamata a seguito dell'aggiunta automatica della riga alla pressione del tab sull'ultima cella dell'ultima riga presente in griglia.
L'ambiente, all'interno della callback, renderà disponibile l'OGGETTOCORRENTE dove sarò possibile inizializzare la riga appena aggiunta/inserita
RICERCA
Callback per il richiamo della funzione di ricerca delle celle della griglia.
La callback è unica ed al suo interno è possibile identificare la cella dalla quale è stata richiesta la ricerca attraverso il parametro PROPRIETACORRENTE della @DEFVID.
AUTOCOMPLETAMENTO
Callback di autocompletamento centralizzata
DEFINIZIONEQUERY
Nella callback definita, sarà possibile definire la query legata all'autocompletamento.
La variabile contenete l'identificativo della query dovrà essere la medesima definita nell'attributo Query.
La callback verrà richiamata una sola volta alla pressione del primo tasto sul campo di edit.
Se specificato il parametro QueryDinamica, sulla collezione di colonne, la callback verrà richiamata ad ogni prima pressione di un tasto ogni qual volta il campo di edit prenderà il fuoco.
INRIGA
Callback per la definizione delle operazioni da eseguire in ingresso riga.
Non è possibile inserire in tale parametro le istruzioni 'GOTO' mentre è consentito inserire una o più operazioni semplici (assegnamenti) utilizzando il carattere ':' come separatore fra le istruzioni.
OUTRIGA
Callback per la definizione delle operazioni da eseguire in uscita riga.
Non è possibile inserire in tale parametro le istruzioni 'GOTO' mentre è consentito inserire una o più operazioni semplici (assegnamenti) utilizzando il carattere ':' come separatore fra le istruzioni.
- Nello sviluppo in cui viene gestita una architettura MVC la callback di OUTRIGA viene chiamata dopo le callback di VALIDAZIONEDATI/DERIVAZIONEDATI, solo se non ci sono stati errori.
- L'ambiente di esecuzione esegue la validazione all'uscita di ogni cella mettendo a disposizione il nome della proprietà (la singola cella), grazie al parametro PROPRIETACORRENTE indicato sulla specifica @DEFVID, ed esegue la validazione anche all'uscita della riga.
AZIONECLICK
Callback dell'azione da eseguire
AZIONEMOUSEOVER
Callback richiamata al click sul menu definito attraverso il mouse over .
Per abilitare la callback è necessario avere definito la proprietà: Colonna.EnableMouseOverMenu=#True su almeno una colonna definita sulla griglia.
All'interno della callback sarà necessario:
- testare il property ID per conoscere la colonna su cui si sta richiamando il menu
- Eseguire il menu di contesto richiesto.
IDMENU
Menu contestuale da visualizzare attraverso il tasto destro sulla griglia.
Deve essere definito in precedenza mediante una specifica @DEFCONTEXTMENU.
Questo menù verrà visualizzato solo se le celle della riga non dispongono di un proprio menù.
DRAG
Consente di definire il comportamento da attenere nel caso in cui venga iniziata un'operazione di trascinamento di una riga della griglia.
DROP
Consente di definire il comportamento da attenere nel caso in cui venga terminata un'operazione di trascinamento all'interno della griglia.
COMPRIMIRAGGRUPPAMENTI
Consente di definire la modalità di visualizzazione del raggruppamento eventualmente definito per la griglia mediante il parametro RAGPREDEFINITO
PREVALIDAZIONE
Callback richiamata prima del processo di VALIDAZIONE.
All'interno della callback è possibile gestibile la specifica @BREAKEVENT per poter bloccare tutto il flusso di validazione dei dati.
POSTDERIVAZIONEDATI
Callback richiamata dopo la DERIVAZIONEDATI, per effettuare aggiornamenti grafici ulteriori.
VALIDAZIONEDATI
Definisce i metodi per la validazione e derivazione dei dati modificati sull'oggetto a cui la videata fa riferimento.
MULTISELEZIONE
Permette di indicare le callback di gestione della multiselezione delle righe della griglia
PAGINAZIONE
Indica il tipo di paginazione del controllo.
EXPANDER
Attached Property per pannello di tipo Expander
DOCK
Consente di indicare se l'oggetto deve occupare tutto lo spazio del DockPanel in verticale e/o in orizzontale (possono essere indicati entrambi).
PERSONALIZZABILE
Definisce l'oggetto grafico come personalizzabile dall'utente in fase di runtime.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
LINKTO
Permette di creare un legame tra due controlli esistenti all'interno della stessa videata.
E' possibile utilizzarlo per creare un legame tra griglia da collezione e controllo DEFGANTT, questo legame andrà a creare un nuovo oggetto 'Composto' dove la parte di lista verrà gestita dalla griglia, mentre la parte grafica sarà pilotata dal controllo Gantt
AZIONEINVIO
Consente di indicare l'ID del tasto da simulare alla pressione del tasto INVIO.
L'utilizzo del parametro implica l'utilizzo del parametro ID
BLOCCALOOKUP
Definisce la possibilità di bloccare la definizione di colonne di lookup personalizzate in presenza di colonne dinamiche.
In questo modo si evita che, graficamente, alcune colonne dinamiche possano essere mostrate in un ordine errato qualora sia presente una o più colonne personalizzate di lookup.
Metodi
| Metodo | Descrizione | SMP |
|---|---|---|
| AdattaRiga | Adatta l'altezza della riga al testo contenuto nelle colonne multilinea | |
| AdattaRighe | Adatta l'altezza di tutte le righe della griglia all'avvio | |
| AggiornaRigheModificate | Aggiorna le righe modificate sulla collezione | |
| BloccaOrdinamentoDati | Blocco dell'ordinamento dei dati della griglia | |
| CaricaValoriIdentificazione | Carica una collezione contenente i valori identificativi delle righe | |
| ComprimiTuttiGruppi | Comprime/espande tutti i raggruppamenti della griglia | |
| ComprimiTuttiNodi | Comprime/espande tutti i nodi della griglia | |
| DisabilitaSelezionaTutto | Disabilita la funzionalità di 'Seleziona tutto' e 'Annulla selezione' della griglia | |
| GetColonnaCorrente | Restituisce l'identificativo della colonna con il fuoco | |
| GetLivelloAlbero | Restituisce il livello gerarchico del nodo dell'albero | |
| GetNumeroRighe | Restituisce il numero di righe della griglia | |
| GetStatoNodo | Restituisce lo stato di visibilità di un nodo della griglia | |
| GetValoreCellaCorrente | Restituisce il valore contenuto all'interno della cella corrente | |
| GetValoriIdentificazione | Restituisce una stringa contenente i valori identificativi della riga corrente | |
| InserisciRiga | Inserisce una riga all'interno della griglia | |
| Rebind | Permette di modificare, a runtime, la fonte dati della griglia | |
| RigaEliminabileAutomaticamente | Restituisce se la riga corrente verrà eliminata automaticamente o meno | |
| SetAggiuntaRigaAuto | Abilitazione/Disabilitazione aggiunta automatica di una riga alla pressione del tasto TAB | |
| SetEditabile | Abilitazione/Disabilitazione griglia | |
| SetMultiselezione | Abilitazione/Disabilitazione multiselezione in griglia | |
| SetNoRipetizione | Permette di evitare la ripetizione degli stessi valori delle celle tra una riga e l'altra | |
| SetOrdinamento | Permette di impostare un ordinamento sulla griglia | |
| SetPosizionamento | Permette di definire una condizione per calcolare il posizionamento del cursore sulla griglia | |
| SetQueryAutocompletamento | Permette di ridefinire, a runtime, la query di autocompletamento di una colonna | |
| SetQueryObjectAutocompletamento | Imposta una query di autocompletamento sulla colonna sostituendo quella già presente | |
| SetRaggruppamentoComposto | Permette di impostare un raggruppamento composto sulla griglia | |
| SetRaggruppamentoRighe | Permette di impostare un raggruppamento sulla griglia | |
| SetRimuoviRigaVuota | Abilitazione/Disabilitazione eliminazione di una riga automaticamente in fase di uscita dalla riga | |
| SetStampa | Abilitazione/Disabilitazione stampa della griglia | |
| SetStampaAdattaPagina | Permette di impostare, a runtime, se nella stampa la griglia deve essere adattata alla pagina di stampa | |
| SetStampaSottotitolo | Permette di cambiare, a runtime, il sottotitolo della pagina di stampa | |
| SetStampaTitolo | Permette di cambiare, a runtime, il titolo della pagina di stampa | |
| SetStatoOutput | Permette di impostare, a runtime, lo stato di output di una colonna della griglia | |
| SetStatoVisibilita | Permette di impostare, a runtime, lo stato di visibilità di una colonna della griglia | |
| SetStileRiga | Permette di definire una formula per calcolare lo stile da applicare ad ogni riga della griglia | |
| SetTitolo | Permette di cambiare, a runtime, il titolo di una colonna della griglia | |
| Stampa | Permette di effettuare la stampa della griglia direttamente da codice |
Esempi
Definizione griglia da collezione
DIM objCorrente[CLASSE[BLD_AIG]]
DIM collObj[CLASSE[BLD_AIG] COLLEZIONE]
DIM collColonne[CLASSE[BC_VID_GRID_COL] COLLEZIONE]
'@DEFVID DIM[25,120] NOME[Esempio] POS[VIDEATA,CENTRO] TIT["Griglia da collezione - Caricamento da collezione"] ID["IDVid"] _
TOOLBAR[IDTOOLBAR["ToolBar"] ] ONLOAD[OnLoad()]
'@DEFTOOLBAR IDTOOLBAR["ToolBar"] _
BOTTONE[IDBOTTONE["SYS_EXIT_ESC"] AZIONE[Abbandona()]] _
BOTTONE[IDBOTTONE["SYS_NEW"] AZIONE[AggiuntaNuovaRiga(collObj [INOUT])]]
'@DEFGRIDPANEL NOME[PannelloGrigliaElenco] ID["PannelloGrigliaElenco"] TIT["Elenco"] LAYOUTTIT[STILE[#INTESTAZIONE_VIDEATA]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[118] LAYOUT[#DINAMICO]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[23] LAYOUT[#DINAMICO]]
'@DEFCOLLECTIONGRID NOME[GrigliaCollezione] ID["GrigliaCollezione"] RET[1,1] POS[1,1] DIM[1,1] _
COLLEZIONEDATI[collObj] OGGETTOCORRENTE[objCorrente] COLLEZIONECOLONNE[collColonne] RICERCA[Ricerca(objCorrente [INOUT])] _
VALIDAZIONEDATI[GES[objCorrente.Valida(Esempio.GetProprietaCorrente())] _
DERIVAZIONEDATI[objCorrente.Deriva_dati(Esempio.GetProprietaCorrente())]] _
GRID[COL[2] RIGA[1] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[PannelloGrigliaElenco]
'@RUNVID
...
'@SRP Load()
'Definizione stili da applicare
'@DEFSTYLE STILE["ROSSO"] COLORESFONDO[ROSSO] COLORETESTO[BIANCO]
'@DEFSTYLE STILE["VERDE"] COLORESFONDO[VERDE]
'@DEFSTYLE STILE["GIALLO"] COLORESFONDO[GIALLO]
'@DEFSTYLE STILE["NERO"] COLORESFONDO[NERO] COLORETESTO[BIANCO]
Return
...
'@SRP DefinizioneColonne(collColonne[CLASSE[BC_VID_GRID_COL] COLLEZIONE] [INOUT])
DIM colonna[CLASSE[BC_VID_GRID_COL]]
DIM colStringa[CLASSE[BC_STRING] COLLEZIONE]
DIM valore[STRING]
'Definizione formato
'@DEFFORMAT FORMATO["3Decimali"] CIFRETOT[10] CIFREDEC[3] TIPO[#IMPORTO]
'Creazione colonna con ricerca
colonna.Clear():colonna.Init("Codice",10,0,0,1) : colonna.Titolo = "Codice" : colonna.AbilitaRicerca = #True : collColonne.AggiungiColonna(colonna [INOUT])
'Creazione colonna in output
colonna.Clear():colonna.Init("IdEdit",10,0,0,1) : colonna.Titolo = "IdEdit" : colonna.Output = #True : collColonne.AggiungiColonna(colonna [INOUT])
'Creazione colonne con stile variabile
'Se il codice autore è uguale a zero viene applicato lo stile "ROSSO" altrimenti "VERDE"
colonna.Clear():colonna.Init("CodAutore",10,0,0,1) : colonna.Titolo = "Codice autore" : colonna.Stile = "IF(CodAutore = 0,'ROSSO','VERDE')" : collColonne.AggiungiColonna(colonna [INOUT])
'Se la riga è uguale a 1 viene applicato lo stile "ROSSO", se uguale a 2, lo stile "VERDE", se uguale a, lo stile "GIALLO", se la riga non rientra in quelle condizioni viene applicato lo stile "NERO"
colonna.Clear():colonna.Init("Riga",10,0,0,1) : colonna.Titolo = "Riga"
colonna.Stile = "CHOOSE(Riga=1,'ROSSO',Riga=2,'VERDE',Riga=3,'GIALLO','NERO')"
collColonne.AggiungiColonna(colonna [INOUT])
'Creazione colonne con funzioni
colonna.Clear():colonna.Init("Tariffa",10,0,0,1) : colonna.FunzioneGruppo = "SUM" : collColonne.AggiungiColonna(colonna [INOUT])
colonna.Clear():colonna.Init("Riga",10,0,0,1) : colonna.FunzioneGruppo = "AVG" : collColonne.AggiungiColonna(colonna [INOUT])
colonna.Clear():colonna.Init("Check",10,0,0,1) : colonna.FunzioneGruppo = "COUNT" : collColonne.AggiungiColonna(colonna [INOUT])
'Crezione colonna con formato
colonna.Clear():colonna.Id="Prezzo" :colonna.Dimensione=12 : colonna.Formato="3Decimali": collColonne.AggiungiColonna(colonna [INOUT])
'Creazione colonna calcolata
colonna.Clear():colonna.Id = "PERC1" :colonna.Titolo = "Sconto" :colonna.Dimensione = 10: colonna.Formato="Importo" :colonna.Posizione=8
colStringa.Clear():valore="Prezzo":colStringa.AGGIUNGI(valore)
'Se il prezzo è minore di 100 c'è uno sconto del 30% altrimenti del 45%
colonna.SetColonnaCalcolata("IF(PREZZO<100,(PREZZO*30)/100,(PREZZO*45)/100)", colStringa [INOUT])
collColonne.AggiungiColonna(colonna [INOUT])
' Definizione colonne per lookup
colonna.Clear():colonna.Id="Codice" :colonna.Dimensione=10 :colonna.Nascosta=1 :collColonne.AggiungiColonna(colonna [INOUT])
colonna.Clear():colonna.Id="CodAutore" :colonna.Dimensione=25 :colonna.Posizione=1 :colonna.LarghezzaDinamica=#TRUE :collColonne.AggiungiColonna(colonna [INOUT])
' LookUp su un tipo dato stringa
colonna.Clear():colonna.Id = "LookUpTesto" :colonna.Dimensione=15 :colonna.Posizione=2 :colonna.Titolo = "Descrizione Famiglia" :colonna.Formato="Testo"
colStringa.Clear():valore="CODAUTORE":colStringa.AGGIUNGI(valore)
colonna.SetQueryLookup(idQueryTesto, "Descrizione", colStringa [INOUT])
collColonne.AggiungiColonna(colonna [INOUT])
Return
...
'@SRP OnLoad()
'Metodo per impostare il raggruppamento sulle colonne Codice e CodAutore
GrigliaCollezione.SetRaggruppamentoRighe("Codice,CodAutore")
'Metodo per impostare lo stile della riga
'Se la riga è uguale a 1 viene applicato lo stile "ROSSO", se uguale a 2, lo stile "VERDE", se uguale a, lo stile "GIALLO", se la riga non rientra in quelle condizioni viene applicato lo stile "NERO"
GrigliaCollezione.SetStileRiga("CHOOSE(Riga=1,'ROSSO',Riga=2,'VERDE',Riga=3,'GIALLO','NERO')")
Return
...
'@SRP Ricerca(objCorrente [CLASSE[BLD_AIG]] [INOUT])
Switch Esempio.GetProprietaCorrente()
Case objCorrente.RicercaManualeNum.PropertyId() objCorrente.RicercaNumerica()
Case objCorrente.RicercaManuale.PropertyId() objCorrente.RicercaTestuale()
EndSwitch
Return
...
'@SRP AggiuntaNuovaRiga(collObj[CLASSE[BLD_AIG] COLLEZIONE] [INOUT])
DIM tmpObjCorr[CLASSE[BLD_AIG]]
'Aggiunta di una nuova riga con posizionamento
tmpObjCorr.Clear()
tmpObjCorr.Codice = collObj.Last().Codice + 1
collObj.Add(tmpObjCorr)
'@DEFVIDPOS ID["PannelloGrigliaElenco"] PROPERTYID[collObj.Last().Codice.PropertyId()] GOVID[]
Return
Definizione griglia da collezione con colonna di lookup e query multigruppo
'@SRP Esempio2()
Load()
'@DEFVID DIM[35,140] NOME[NomeVid] TOOLBAR[IDTOOLBAR["IDToolbar"]]
'@DEFTOOLBAR IDTOOLBAR["IDToolbar"] _
BOTTONE[IDBOTTONE["SYS_EXIT"] TITOLO["Abbandona"] AZIONE[Abbandona()]]
'@DEFGRIDPANEL NOME[GridPanel] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[138] LAYOUT[#DINAMICO]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[33] LAYOUT[#DINAMICO]] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO]]
'@DEFCOLLECTIONGRID NOME[CollectionGrid] ID["GrigliaCollezione"] RET[1,1] POS[1,1] DIM[20,140] _
COLLEZIONEDATI[CollCliForn] COLLEZIONECOLONNE[ColonneGriglia] _
OGGETTOCORRENTE[ObjCorr] _
GRID[COL[2] RIGA[2] RIGADIN[1] COLDIN[1]]
'@ENDGRIDPANEL NOME[GridPanel]
'@RUNVID
Return
...
'@SRP Query()
'@DEFQUERY IDQUERY[IDQuery] NOME["QueryPrincipale"]
'@DEFQUERYFROM IDQUERY[IDQuery] TABELLA[BLDCLIFOR]
'@DEFQUERYCOLUMN IDQUERY[IDQuery] _
ESPR[BLDCLIFOR.COD AS [COD]] _
ESPR[BLDCLIFOR.CF AS [CF]] _
ESPR[BLDCLIFOR.CODMAG AS [CodMag]]
'@GETQUERYDATA IDQUERY[IDQuery] COLLEZIONE[CollCliForn]
Return
...
'@SRP CreazioneColonne()
'@DEFFORMAT FORMATO["Testo"] _
TIPO[#TESTO]
DIM colonna[CLASSE[BC_VID_GRID_COL]]
DIM val[STRING]
DIM valGruppo[STRING]
DIM CollStringa[CLASSE[BC_STRING]COLLEZIONE]
QueryLookup()
'Colonna Codice
colonna.Clear()
colonna.Id="COD"
colonna.Dimensione=7
colonna.Posizione = 1
ColonneGriglia.AggiungiColonna(colonna [INOUT])
'Colonna Codice fiscale
colonna.Clear():colonna.Id="CF"
colonna.Dimensione=20
colonna.Posizione = 3
colonna.LarghezzaDinamica=#True
ColonneGriglia.AggiungiColonna(colonna [INOUT])
'Colonna codice magazzino
colonna.Clear():colonna.Id="CODMAG"
colonna.Dimensione=15
colonna.Posizione = 12
colonna.Nascosta = 0
ColonneGriglia.AggiungiColonna(colonna [INOUT])
'Colonna lookup del codice magazzino
colonna.Clear():colonna.Id = "LookUpMagazzino"
colonna.Titolo = "Descrizione magazzino"
colonna.Dimensione=20
colonna.Posizione=13
colonna.Formato="Testo"
valGruppo="*GR*"
CollStringa.AGGIUNGI(valGruppo)
val="CODMAG"
CollStringa.AGGIUNGI(val)
colonna.SetQueryLookup(IDQueryLookup, "DesMag", CollStringa [INOUT])
ColonneGriglia.AggiungiColonna(colonna [INOUT])
Return
...
'@SRP QueryLookup()
'@DEFQUERY IDQUERY[IDQueryLookup] NOME["QueryLookup"]
'@DEFQUERYFROM IDQUERY[IDQueryLookup] TABELLA[BLDMAGAZZINO]
'@DEFQUERYCOLUMN IDQUERY[IDQueryLookup] _
ESPR[BLDMAGAZZINO.COD AS [CODMAG]] _
ESPR[BLDMAGAZZINO.DES AS [DesMag]]
Return