Differenze tra le versioni di "Inserire un oggetto in una cella di una GridView"
Riga 21: | Riga 21: | ||
Mostriamo un esempio pratico, nel quale si inseriranno tre oggetti in una ''GridView'': | Mostriamo un esempio pratico, nel quale si inseriranno tre oggetti in una ''GridView'': | ||
+ | Private sa As ScrollArea | ||
+ | |||
+ | |||
Public Sub Form_Open() | Public Sub Form_Open() | ||
+ | Dim obs As Observer | ||
Dim kb As CheckBox | Dim kb As CheckBox | ||
Dim cb As ComboBox | Dim cb As ComboBox | ||
Riga 31: | Riga 35: | ||
.H = 100 | .H = 100 | ||
.Columns.Count = 3 | .Columns.Count = 3 | ||
− | .Rows.Count = | + | .Rows.Count = 30 |
End With | End With | ||
Riga 37: | Riga 41: | ||
GridView1.Columns[1].W = 110 | GridView1.Columns[1].W = 110 | ||
GridView1.Columns[2].W = 120 | GridView1.Columns[2].W = 120 | ||
+ | |||
+ | sa = GridView1.Children[0] | ||
+ | obs = New Observer(sa) As "Scroll" | ||
<FONT Color=gray>' ''Creiamo e aggiungiamo tre oggetti:''</font> | <FONT Color=gray>' ''Creiamo e aggiungiamo tre oggetti:''</font> | ||
− | With kb = New CheckBox( | + | With kb = New CheckBox(sa) As "CheckBox" |
.X = 0 | .X = 0 | ||
.Y = 0 | .Y = 0 | ||
Riga 48: | Riga 55: | ||
End With | End With | ||
− | With cb = New ComboBox( | + | With cb = New ComboBox(sa) As "ComboBox" |
.X = GridView1[1, 0].W + 1 | .X = GridView1[1, 0].W + 1 | ||
.Y = GridView1[1, 0].H + 1 | .Y = GridView1[1, 0].H + 1 | ||
Riga 58: | Riga 65: | ||
End With | End With | ||
− | With sl = New Slider( | + | With sl = New Slider(sa) As "Slider" |
.X = GridView1[1, 0].W + GridView1[2, 1].W + 1 | .X = GridView1[1, 0].W + GridView1[2, 1].W + 1 | ||
.Y = GridView1[1, 0].H + GridView1[1, 1].H + 1 | .Y = GridView1[1, 0].H + GridView1[1, 1].H + 1 | ||
Riga 87: | Riga 94: | ||
Print "Utilizzato: "; Last.Name | Print "Utilizzato: "; Last.Name | ||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public Sub Scroll_Scroll() | ||
+ | |||
+ | Dim ob As Object | ||
+ | Dim b As Byte | ||
+ | |||
+ | For Each ob In sa.Children | ||
+ | Inc b | ||
+ | ob.Y = TableView1.Rows[b].Y - sa.ScrollY ' La risorsa a noi utile è la proprietà ".ScrollY" della "ScrollArea" | ||
+ | Next | ||
+ | |||
'''End''' | '''End''' |
Versione delle 18:49, 19 mag 2016
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 alla GridView: l'effetto visivo, grafico è sostanzialmente quello desiderato.
Questa soluzione si rivela in modo evidente approssimativa, sia perché l'oggetto 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 l'oggetto sovrapposto.
Attualmente l'oggetto GridView possiede la propriedad .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 ob.Name 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 l'oggetto o gli oggetti che si vogliono aggiungere alla GridView.
In questo modo gli oggetti inseriti nell'oggetto Contenitore, "figlio" della GridView, faranno parte della GridView medesima.
Gli oggetti aggiunti in questo modo alla GridView conserveranno una certa loro autonomia, con particolare riferimento alla gestione dei proprie eventi.
Mostriamo un esempio pratico, nel quale si inseriranno tre oggetti in una GridView:
Private sa As ScrollArea Public Sub Form_Open() Dim obs As Observer Dim kb As CheckBox Dim cb As ComboBox Dim sl As Slider With GridView1 .W = 300 .H = 100 .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: 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[1, 0].W + 1 .Y = GridView1[1, 0].H + 1 .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[1, 0].W + GridView1[2, 1].W + 1 .Y = GridView1[1, 0].H + GridView1[1, 1].H + 1 .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 Inc b ob.Y = TableView1.Rows[b].Y - sa.ScrollY ' La risorsa a noi utile è la proprietà ".ScrollY" della "ScrollArea" Next End