Differenze tra le versioni di "Inserire un oggetto in una cella di una TableView"
Riga 1: | Riga 1: | ||
Molti programmatori esprimono l'esigenza di poter inserire all'interno di una o più celle di una ''TableView'' alcuni oggetti grafici (''ComboBox'', ''Button'', etc). Il più delle volte per ottenere questo risultato, si sovrappone semplicemente l'Oggetto alla ''TableView'': l'effetto visivo, grafico, è sostanzialmente quello desiderato. | Molti programmatori esprimono l'esigenza di poter inserire all'interno di una o più celle di una ''TableView'' alcuni oggetti grafici (''ComboBox'', ''Button'', etc). Il più delle volte per ottenere questo risultato, si sovrappone semplicemente l'Oggetto alla ''TableView'': l'effetto visivo, grafico, è sostanzialmente quello desiderato. | ||
− | Questa soluzione si rivela in modo evidente approssimativa, sia perché l'Oggetto non è parte, non è '' | + | Questa soluzione si rivela in modo evidente approssimativa, sia perché l'Oggetto non è parte, non è ''Figlio'' costituente della ''TableView'', sia perché esso, essendo meramente sovrapposto alla ''TableView'', resta totalmente indipendente da questa. Ciò comporta che alcuni eventuali mutamenti dello stato e di alcune Proprietà della ''TableView'' non influenzeranno l'Oggetto sovrapposto. |
Attualmente il Controllo grafico ''TableView'' possiede la Proprietà ".Children" . Questa circostanza sta a significare che la ''TableView'' è composta anche da almeno un Oggetto ''figlio'', e la si può verificare con il seguente semplice codice: | Attualmente il Controllo grafico ''TableView'' possiede la Proprietà ".Children" . Questa circostanza sta a significare che la ''TableView'' è 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 12: | Riga 12: | ||
Next | Next | ||
− | + | End | |
− | Lanciando il predetto codice, si vedrà in console che la ''TableView'' possiede un solo Oggetto '' | + | Lanciando il predetto codice, si vedrà in console che la ''TableView'' possiede un solo Oggetto ''Figlio'', e che tale Oggetto è una ''ScrollArea''. Poiché la ''ScrollArea'' è un Oggetto grafico del tipo ''Contenitore'', si potrà utilizzare tale ''Contenitore'' inserendo in esso l'Oggetto o gli Oggetti che si vogliono aggiungere alla ''TableView''. |
− | In questo modo gli oggetti inseriti nell'Oggetto ''Contenitore'', "'' | + | In questo modo gli oggetti inseriti nell'Oggetto ''Contenitore'', "''Figlio'' " della ''TableView'', faranno parte della ''TableView'' medesima. |
Gli Oggetti aggiunti in questo modo alla ''TableView'' conserveranno una certa loro autonomia, con particolare riferimento alla gestione dei proprie eventi. | Gli Oggetti aggiunti in questo modo alla ''TableView'' conserveranno una certa loro autonomia, con particolare riferimento alla gestione dei proprie eventi. | ||
Riga 73: | Riga 73: | ||
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 106: | Riga 110: | ||
Next | Next | ||
− | + | End |
Versione attuale delle 15:21, 27 giu 2024
Molti programmatori esprimono l'esigenza di poter inserire all'interno di una o più celle di una TableView alcuni oggetti grafici (ComboBox, Button, etc). Il più delle volte per ottenere questo risultato, si sovrappone semplicemente l'Oggetto alla TableView: 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 TableView, sia perché esso, essendo meramente sovrapposto alla TableView, resta totalmente indipendente da questa. Ciò comporta che alcuni eventuali mutamenti dello stato e di alcune Proprietà della TableView non influenzeranno l'Oggetto sovrapposto.
Attualmente il Controllo grafico TableView possiede la Proprietà ".Children" . Questa circostanza sta a significare che la TableView è 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 TableView1.Children Print ob.Name Next End
Lanciando il predetto codice, si vedrà in console che la TableView possiede un solo Oggetto Figlio, e che tale Oggetto è una ScrollArea. Poiché la ScrollArea è un Oggetto grafico del tipo Contenitore, si potrà utilizzare tale Contenitore inserendo in esso l'Oggetto o gli Oggetti che si vogliono aggiungere alla TableView.
In questo modo gli oggetti inseriti nell'Oggetto Contenitore, "Figlio " della TableView, faranno parte della TableView medesima.
Gli Oggetti aggiunti in questo modo alla TableView 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 TableView:
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 TableView1 .W = 300 .H = 100 .Columns.Count = 3 .Rows.Count = 30 End With TableView1.Columns[0].W = 70 TableView1.Columns[1].W = 110 TableView1.Columns[2].W = 120 sa = TableView1.Children[0] obs = New Observer(sa) As "Scroll" ' Crea e aggiunge tre Oggetti: With kb = New CheckBox(sa) As "CheckBox" .X = 0 .Y = 0 .W = TableView1[0, 0].W .H = TableView1[0, 0].H .Text = "On/Off" .Name = "CheckBox" End With With cb = New ComboBox(sa) As "ComboBox" .X = TableView1.Columns[1].X .Y = TableView1.Rows[1].Y .W = TableView1[1, 1].W .H = TableView1[1, 1].H .Text = "Numeri" .List = ["Uno", "Due", "Tre", "Quattro", "Cinque", "Sei"] .Name = "ComboBox" End With With sl = New Slider(sa) As "Slider" .X = TableView1.Columns[2].X .Y = TableView1.Rows[2].Y .W = TableView1[2, 2].W .H = TableView1[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 = TableView1.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 = TableView1.Columns[b].X - sa.ScrollX Inc b Next End