Differenze tra le versioni di "Inserire un oggetto in una cella di una GridView"
Riga 5: | Riga 5: | ||
Attualmente l'Oggetto ''GridView'' possiede la Proprietà ".Children". | Attualmente l'Oggetto ''GridView'' possiede la Proprietà ".Children". | ||
<BR>Questa circostanza sta a significare che la ''GridView'' è composta anche da almeno un Oggetto ''Figlio'', e la si può verificare con il seguente semplice codice: | <BR>Questa circostanza sta a significare che la ''GridView'' è composta anche da almeno un Oggetto ''Figlio'', e la si può verificare con il seguente semplice codice: | ||
− | + | Public Sub Form_Open() | |
Dim ob As Object | Dim ob As Object | ||
Riga 13: | Riga 13: | ||
Next | Next | ||
− | + | End | |
Lanciando il predetto codice, si vedrà in console che la ''GridView'' possiede un solo Oggetto ''Figlio'', e che tale Oggetto è una ''ScrollArea''. <BR>Poiché la ''ScrollArea'' è un Oggetto ''Contenitore'', si potrà utilizzare tale ''Contenitore'' inserendo in esso il Controllo grafico o i Controlli grafici che si vogliono aggiungere alla ''GridView''. | Lanciando il predetto codice, si vedrà in console che la ''GridView'' possiede un solo Oggetto ''Figlio'', e che tale Oggetto è una ''ScrollArea''. <BR>Poiché la ''ScrollArea'' è un Oggetto ''Contenitore'', si potrà utilizzare tale ''Contenitore'' inserendo in esso il Controllo grafico o i Controlli grafici che si vogliono aggiungere alla ''GridView''. | ||
Riga 23: | Riga 23: | ||
Mostriamo un esempio pratico, nel quale si inseriranno tre Controlli grafici in una ''GridView'': | Mostriamo un esempio pratico, nel quale si inseriranno tre Controlli grafici in una ''GridView'': | ||
Private sa As ScrollArea | Private sa As ScrollArea | ||
+ | Private GridView1 As GridView | ||
Riga 32: | Riga 33: | ||
Dim sl As Slider | Dim sl As Slider | ||
− | With GridView1 | + | With GridView1 = New GridView(Me) |
+ | .X = 0 | ||
+ | .y = 0 | ||
.W = 300 | .W = 300 | ||
− | .H = | + | .H = 150 |
.Columns.Count = 3 | .Columns.Count = 3 | ||
.Rows.Count = 30 | .Rows.Count = 30 | ||
Riga 74: | Riga 77: | ||
End With | End With | ||
− | + | End | |
+ | |||
− | + | Public Sub CheckBox_Click() | |
Print "Utilizzato: "; Last.Name | Print "Utilizzato: "; Last.Name | ||
− | + | End | |
+ | |||
− | + | Public Sub ComboBox_Click() | |
Print "Utilizzato: "; Last.Name | Print "Utilizzato: "; Last.Name | ||
− | + | End | |
+ | |||
− | + | Public Sub Slider_Change() | |
Print "Utilizzato: "; Last.Name | Print "Utilizzato: "; Last.Name | ||
− | + | End | |
+ | |||
+ | |||
+ | Public Sub Scroll_Scroll() | ||
− | |||
− | |||
Dim ob As Object | Dim ob As Object | ||
Dim b As Byte | Dim b As Byte | ||
Riga 107: | Riga 114: | ||
Next | Next | ||
− | + | End |
Versione attuale delle 05:21, 7 giu 2024
Molti programmatori esprimono l'esigenza di poter inserire all'interno di una o più celle di una GridView alcuni Oggetti grafici (ComboBox, Button, etc). Il più delle volte per ottenere questo risultato, si sovrappone semplicemente l'Oggetto grafico alla GridView. L'effetto visivo è sostanzialmente quello desiderato.
Questa soluzione si rivela in modo evidente approssimativa, sia perché il Controllo grafico non è parte, non è Figlio costituente della GridView, sia perché esso, essendo meramente sovrapposto alla GridView, resta totalmente indipendente da questa. Ciò comporta che alcuni eventuali mutamenti dello stato e di alcune Proprietà della GridView non influenzeranno il Controllo grafico sovrapposto.
Attualmente l'Oggetto GridView possiede la Proprietà ".Children".
Questa circostanza sta a significare che la GridView è composta anche da almeno un Oggetto Figlio, e la si può verificare con il seguente semplice codice:
Public Sub Form_Open() Dim ob As Object For Each ob In GridView1.Children Print Object.Type(ob) Next End
Lanciando il predetto codice, si vedrà in console che la GridView possiede un solo Oggetto Figlio, e che tale Oggetto è una ScrollArea.
Poiché la ScrollArea è un Oggetto Contenitore, si potrà utilizzare tale Contenitore inserendo in esso il Controllo grafico o i Controlli grafici che si vogliono aggiungere alla GridView.
In questo modo i Controlli grafici inseriti nell'Oggetto Contenitore, "Figlio " della GridView, faranno parte della GridView medesima.
I Controlli grafici, aggiunti in questo modo alla GridView, conserveranno una certa loro autonomia, anche con riferimento alla gestione dei propri Eventi.
Mostriamo un esempio pratico, nel quale si inseriranno tre Controlli grafici in una GridView:
Private sa As ScrollArea Private GridView1 As GridView Public Sub Form_Open() Dim obs As Observer Dim kb As CheckBox Dim cb As ComboBox Dim sl As Slider With GridView1 = New GridView(Me) .X = 0 .y = 0 .W = 300 .H = 150 .Columns.Count = 3 .Rows.Count = 30 End With GridView1.Columns[0].W = 70 GridView1.Columns[1].W = 110 GridView1.Columns[2].W = 120 sa = GridView1.Children[0] obs = New Observer(sa) As "Scroll" ' Creiamo e aggiungiamo tre Oggetti grafici: With kb = New CheckBox(sa) As "CheckBox" .X = 0 .Y = 0 .W = GridView1[0, 0].W .H = GridView1[0, 0].H .Text = "On/Off" .Name = "CheckBox" End With With cb = New ComboBox(sa) As "ComboBox" .X = GridView1.Columns[1].X .Y = GridView1.Rows[1].Y .W = GridView1[1, 1].W .H = GridView1[1, 1].H .Text = "Numeri" .List = ["Uno", "Due", "Tre", "Quattro", "Cinque", "Sei"] .Name = "ComboBox" End With With sl = New Slider(sa) As "Slider" .X = GridView1.Columns[2].X .Y = GridView1.Rows[2].Y .W = GridView1[2, 2].W .H = GridView1[2, 2].H .Name = "Slider" End With End Public Sub CheckBox_Click() Print "Utilizzato: "; Last.Name End Public Sub ComboBox_Click() Print "Utilizzato: "; Last.Name End Public Sub Slider_Change() Print "Utilizzato: "; Last.Name End Public Sub Scroll_Scroll() Dim ob As Object Dim b As Byte For Each ob In sa.Children ' Per evitare che in caso di scorrimento in alto e in basso dell'Oggetto "Figlio", la "ScrollArea", mediante l'apposito cursore laterale, si farà uso della Proprietà ".ScrollY" della "ScrollArea" medesima: ob.Y = GridView1.Rows[b].Y - sa.ScrollY ' Per evitare che in caso di scorrimento a destra e a sinistra dell'Oggetto "Figlio", la "ScrollArea", mediante l'apposito cursore inferiore, si farà uso della Proprietà ".ScrollX" della "ScrollArea" medesima: ob.X = GridView1.Columns[b].X - sa.ScrollX Inc b Next End