Il metodo FillGrid

 

Procedure FillGrid
Parameter cAlias, cElencoCampi, cElencoTitoli

Articoli collegati:

1) Griglia speciale
2) Schema a blocchi dell'oggetto Grids
3) Descrizione del metodo FillGrid ( il presente )
4) Descrizione dei metodi e degli eventi della grid

FillGrid e' il metodo che verra usato per cambiare il contenuto della griglia.

Nota
Per spiegare meglio la sintassi ed il significato di questi parametri supponiamo che si vogliano mostrare dei dati da una tabella con la struttura (Codice C(10), Descr C(40), Quantita N(4), Prezzo N(10,2),Venduto L ) e che la tabella ha il nome Articoli.dbf

La procedura FillGrid è molto versatile, ne senso che gli ultimi due parametri possono essere sia stringhe che array (con stringhe e/o numeri).

Vediamo degli esempi del modo in quale si possono trasmettere questi parametri.

1. Un primo modo, forse il più conveniente, sono le stringhe :

a) GridS.FillGrid("Articoli")
Verranno fatti vedere tutti i campi dalla tabella Articoli;
Come Captions per le Headers delle colonne verranno presi i nomi dei campi della tabella.
Le celle della griglia saranno delle textbox.

b) cAlias="Articoli"
cElencoCampi="Codice;Descr;Quantita"
GridS1.FillGrid(cAlias,cElencoCampi)

In questo caso, la griglia avrà solamente i 4 campi. Di nuovo, come Captions per le Headers delle colonne verranno prese i nomi dei campi corrispondenti della tabella.
Le celle della griglia saranno delle textbox.

Notare il separatore di campi , il carattere ;

c) cAlias="Articoli"
cElencoCampi="Codice;Descr;Quantita"
cElencoTitoli=";Descrizione articolo"
GridS1.FillGrid(cAlias,cElencoCampi, cElencoTitoli)
Verranno mostrate tre colonne . Con Captions per Headers si vedranno Articoli, Descrizione articolo, Quantità.
Notare che non è obbligatorio specificare tutti i titoli; in questo esempio ho trasmesso solo due titoli separati fra di loro col carattere ; (punto e virgola) il primo è uno spazio (che significa che verrà preso il nome del campo come titolo della colonna) ed il secondo che contiene la stringa Descrizione articolo. Il titolo per il terzo campo verrà preso sempre uguale al nome del campo corrispondente della tabella.
Le celle della griglia saranno delle textbox.


d) cAlias="Articoli"
cElencoCampi="Articolo,Venduto:chk"
GridS1.FillGrid(cAlias,cElencoCampi)

La griglia conterà due colonne. Stavolta il secondo campo non sarà più una textbox, ma una checkbox . Notare il modo di specificare il tipo della cella Separatore il carattere : (due punti)
Indicatore di tipo della cella è chk
L'indicatore di default per il tipo di cella è txt che vuol dire una textbox e non si deve specificare.
Un altro indicatore di cella possibile è cbo che vuol dire una combobox

e) Vediamo adesso un esempio che usa una combobox in una colonna della griglia .
Come ben sapete, le combobox hanno bisogno di più informazioni. Di solito, una combo prende i dati da una tabella fante- RowSource- (per farli vedere nella sua tendina ) e scrive la scelta dell'utente in un campo deifinito di ControlSource- in un'altra tabella.
Per specificare che la cella di una colonna deve essere una combo, il campo della stringa si deve scrivere con la sintassi
nome_campo:cbo:AliasFante.Campo1,Campo2
Tornando alla nostra tabella articoli, se vogliamo mettere l'articolo in una combobox, dobbiamo avere un'altra tabella che contiene un campo articolo ed eventualmente la descrizione dell'articolo.
Questa tabella/cursore si puo ottenere sempre dalla tabella Articoli con un semplice comando Select
Select Codice,Descr from Articoli in cursor Xcombo
A questo punto la chiamata del FillGrid() si puo fare così:
cAlias="Articoli"
cElencoCampi="Codice:cbo:Xcombo.Codice,Descr ; Quantita"
GridS1.FillGrid(cAlias, cElencoCampi)

Nella griglia il primo campo sarà una combo che mostrerà nella sua tendina i dati dalla cursore XCombo e metterà i valori scelti dell'utente nel campo Codice della tabella Articoli; il secondo campo - Quantita - è una semplice textbox.
La combo avra' due colonne : Codice e Descr

f) E' possibile specificare un'espressione complessa come campo della griglia. Ad esempio :
cAlias="Articoli"
cElencoCampi="Substr(Articoli.Descr,1,10);Quantita;Prezzo;Articoli.Quantita*Articoli.Prezzo"
cElencoTitoli="Articolo;Quantita;Prezzo;Prezzo Totale"
GridS1.FillGrid(cAlias,cElencoCampi,cElencoTitoli)

Notare che:
- il primo e l'ultimo sono campi calcolati con espressioni complesse
- per le espressioni complesse è obbligatorio mettere davanti l'alias della tabella per i campi coinvolti nell'espressione

g) I campi che si desidera mostrare nella griglia si possono specificare anche con numero che indica la posizione del campo nella tabella.
Esempio:
cAlias="Articoli"
cElencoCampi="2;Prezzo;3"
GridS1.FillGrid(cAlias,cElencoCampi)
La griglia mostrerà il campo numero due, cioè Descr , il campo Prezzo ed il campo numero 3, cioè Quantità


2.Un'altra possibilità di indicare le informazioni per i dati che si devono far vedere sono i vettori. Esempio:


Dimension aCampi[3]
Dimension aTitoli[2]
aCampi[1]=1 &&il campo numero 1 , cioè Codice ;nota che è un numero
aCampi[2]="Quantita"
aCampi[3]= "4" &&il campo no 4 , cioè Prezzo ;nota che è una stringa
*per specificare il numero di ordine del campo nella tabella si possono usare sia numeri che stringhe.

aTitoli[1]="Codice articolo"
aTitoli[2]="Quantita"
aTitoli[3]="Prezzo"
GridS1.FillGrid(cAlias,@aCampi,@aTitoli)

Notare che i vettori si devono trasmettere come referenze.

Troubleshooting
- se hai usato delle espressioni complesse per le definizioni dei campi, vedi se hai inserito l'alias della tabella davanti ai nomi dei campi coinvolti nelle espressioni.

 

 

Articolo di: Ernest Morariu ©
Torino, 19 Novembre 2001
ernestmorariu@libero.it

 

© Articolo: Ernest Morariu Novembre 2001 - Riproduzione vietata

© FoxPro e Visual FoxPro sono un marchi registrati da Microsoft Corporation

 



Data: 19/11/2001
webmaster@foxitaly.com

 

dal 22 Giugno 1999