Creare array di oggetti: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (3 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 4: | Riga 4: | ||
==Creare un array di dimensioni <SPAN style="text-decoration:underline">indefinite</span> di Oggetti del medesimo tipo== | ==Creare un array di dimensioni <SPAN style="text-decoration:underline">indefinite</span> di Oggetti del medesimo tipo== | ||
In questo caso l'array, dichiarato con un numero indefinito di Elementi, sarà creato e riempito immediatamente con gli Oggetti del tipo stabilito, usando il Metodo ".Push()" dell'array: | In questo caso l'array, dichiarato con un numero indefinito di Elementi, sarà creato e riempito immediatamente con gli Oggetti del tipo stabilito, usando il Metodo ".Push()" dell'array: | ||
Public Sub Form_Open() | |||
Dim bt As Button | Dim <FONT color=green>bt</font> As Button | ||
Dim arrBt As New Button[] | Dim arrBt As New Button[] | ||
Dim j As Byte | Dim j As Byte | ||
| Riga 13: | Riga 13: | ||
<FONT color=gray>' Viene innanzitutto creato l'Oggetto che dovrà essere assegnato a un Elemento dell'array del medeismo tipo dell'Oggetto.'' | <FONT color=gray>' Viene innanzitutto creato l'Oggetto che dovrà essere assegnato a un Elemento dell'array del medeismo tipo dell'Oggetto.'' | ||
' ''La sintassi "New Button(Me)" istruisce l'interprete che l'Oggetto deve essere creato e assegnato al "Form" ("Parent/Genitore"):''</font> | ' ''La sintassi "New Button(Me)" istruisce l'interprete che l'Oggetto deve essere creato e assegnato al "Form" ("Parent/Genitore"):''</font> | ||
With bt = New Button(Me) As "Tasto" | With <FONT color=green>bt</font> = New Button(Me) As "Tasto" | ||
.X = 10 | .X = 10 | ||
.Y = 1 + (30 * j) | .Y = 1 + (30 * j) | ||
| Riga 21: | Riga 21: | ||
<FONT color=gray>' ''Si assegna il nuovo "Button" creato al vettore di tipo dell'Oggetto grafico "Button":''</font> | <FONT color=gray>' ''Si assegna il nuovo "Button" creato al vettore di tipo dell'Oggetto grafico "Button":''</font> | ||
arrBt.<FONT color=#B22222>Push</font>(<FONT color=bt) | arrBt.<FONT color=#B22222>Push</font>(<FONT color=green>bt</font>) | ||
Next | Next | ||
End | |||
==Creare un array di dimensioni <SPAN style="text-decoration:underline">definite</span> di Oggetti del medesimo tipo== | ==Creare un array di dimensioni <SPAN style="text-decoration:underline">definite</span> di Oggetti del medesimo tipo== | ||
In questo caso viene posto un limite massimo agli elementi dell'array. | In questo caso viene posto un limite massimo agli elementi dell'array. | ||
Public Sub Form_Open() | |||
Dim Lblarray As New Label[<Font Color=#B22222>10</font>] <Font Color=gray>' ''è posto ad esempio il limite massimo di 10 Elementi/Oggetti''</font> | Dim Lblarray As New Label[<Font Color=#B22222>10</font>] <Font Color=gray>' ''è posto ad esempio il limite massimo di 10 Elementi/Oggetti''</font> | ||
| Riga 35: | Riga 35: | ||
<Font Color=gray>' ''Ad ogni giro del ciclo crea una Label:''</font> | <Font Color=gray>' ''Ad ogni giro del ciclo crea una Label:''</font> | ||
For b = 0 To | For b = 0 To Lblarray.Max | ||
<Font Color=gray>' ''E' interessante notare che in questo caso non è necessario creare uno specifico Oggetto da assegnare successivamente all'array, ma '''si può creare l'Oggetto usando direttamente un elemento dell'array medesimo:'''''</font> | <Font Color=gray>' ''E' interessante notare che in questo caso non è necessario creare uno specifico Oggetto da assegnare successivamente all'array, ma '''si può creare l'Oggetto usando direttamente un elemento dell'array medesimo:'''''</font> | ||
| Riga 42: | Riga 42: | ||
.W = 100 | .W = 100 | ||
.H = 20 | .H = 20 | ||
.X = | .X = b * 35 | ||
.Y = | .Y = b * 40 | ||
.text = "Label " & CStr(b) | .text = "Label " & CStr(b) | ||
End With | End With | ||
Next | Next | ||
End | |||
In quest'altro esempio, invece, si provvede a creare prima il singolo Oggetto grafico (una ''Label'') e poi ad assegnarlo a un Elemento del vettore del medesimo tipo: | In quest'altro esempio, invece, si provvede a creare prima il singolo Oggetto grafico (una ''Label'') e poi ad assegnarlo a un Elemento del vettore del medesimo tipo: | ||
Public Sub Form_Open() | |||
Dim llbb As New Label[ | Dim llbb As New Label[<Font Color=#B22222>8</font>] <Font Color=gray>' ''è posto ad esempio il limite massimo di 8 Elementi/Oggetti''</font> | ||
Dim lb As Label | Dim lb As Label | ||
Dim b As Byte | Dim b As Byte | ||
<FONT Color=gray>' ''Con un ciclo vengono create | <FONT Color=gray>' ''Con un ciclo vengono create 8 "Label" e assegnate al vettore di tipo "Label":''</font> | ||
For b = 0 To | For b = 0 To llbb.Max | ||
With lb = New Label(Me) | With lb = New Label(Me) | ||
.Border = Border.Raised | .Border = Border.Raised | ||
.X = b * 40 | .X = b * 40 | ||
.Y = | .Y = b * 40 | ||
.W = | .W = 30 | ||
.H = 20 | .H = 20 | ||
.Alignment = Align.Center | |||
.Text = CStr(b) | .Text = CStr(b) | ||
End With | End With | ||
<FONT Color=gray>' ''Assegna la variabile della "Label", appena creata, al vettore di tipo "Label":''</font> | <FONT Color=gray>' ''Assegna la variabile della "Label", appena creata, al vettore di tipo "Label":''</font> | ||
llbb'''[b]''' = lb | |||
Next | |||
End | |||
| Riga 78: | Riga 78: | ||
Nell'esempio seguente sarà creato un array di quattro diversi tipi di Oggetti (sul "Form" saranno creati dal codice un "Button", una "Label", un "ToggleButton" e una "TextArea"): | Nell'esempio seguente sarà creato un array di quattro diversi tipi di Oggetti (sul "Form" saranno creati dal codice un "Button", una "Label", un "ToggleButton" e una "TextArea"): | ||
Public Sub Form_Open() | |||
Dim b, n As Byte | Dim b, n As Byte | ||
| Riga 113: | Riga 113: | ||
Next | Next | ||
End | |||
Public Sub Oggetto_MouseUp() | |||
<FONT Color=gray>' ''Se si clicca su uno dei 4 Controlli grafici, posti sul "Form", sulla barra del titolo del "Form" sarà indicato il Controllo cliccato:''</font> | <FONT Color=gray>' ''Se si clicca su uno dei 4 Controlli grafici, posti sul "Form", sulla barra del titolo del "Form" sarà indicato il Controllo cliccato:''</font> | ||
Me.Title = "Oggetto premuto: " & Object.Type(Last) | Me.Title = "Oggetto premuto: " & Object.Type(Last) | ||
End | |||
=Note= | =Note= | ||
[1] Un ''Array'' o ''Vettore'' è un insieme di elementi del medesimo tipo. Pertanto un ''Array'' - ad esempio - del tipo Integer sarà un insieme di valori ''interi'', conterrà solo valori di tipo ''Intero'' (ciascuno dunque occuperà 4 byte di memoria; o volendo ottenere la quantità di memoria occupata dal tipo ''Intero'' mediante una risorsa di Gambas potremo fare così: | [1] Un ''Array'' o ''Vettore'' è un insieme di elementi del medesimo tipo. Pertanto un ''Array'' - ad esempio - del tipo Integer sarà un insieme di valori ''interi'', conterrà solo valori di tipo ''Intero'' (ciascuno dunque occuperà 4 byte di memoria; o volendo ottenere la quantità di memoria occupata dal tipo ''Intero'' mediante una risorsa di Gambas potremo fare così: "Sizeof(gb.Integer)" ). | ||
Versione attuale delle 16:29, 26 feb 2025
Verranno mostrati alcuni esempi per la creazione di array di Oggetti. [nota 1]
Creare un array di dimensioni indefinite di Oggetti del medesimo tipo
In questo caso l'array, dichiarato con un numero indefinito di Elementi, sarà creato e riempito immediatamente con gli Oggetti del tipo stabilito, usando il Metodo ".Push()" dell'array:
Public Sub Form_Open()
Dim bt As Button
Dim arrBt As New Button[]
Dim j As Byte
For j = 0 To 9
' Viene innanzitutto creato l'Oggetto che dovrà essere assegnato a un Elemento dell'array del medeismo tipo dell'Oggetto.
' La sintassi "New Button(Me)" istruisce l'interprete che l'Oggetto deve essere creato e assegnato al "Form" ("Parent/Genitore"):
With bt = New Button(Me) As "Tasto"
.X = 10
.Y = 1 + (30 * j)
.W = 60
.H = 30
End With
' Si assegna il nuovo "Button" creato al vettore di tipo dell'Oggetto grafico "Button":
arrBt.Push(bt)
Next
End
Creare un array di dimensioni definite di Oggetti del medesimo tipo
In questo caso viene posto un limite massimo agli elementi dell'array.
Public Sub Form_Open()
Dim Lblarray As New Label[10] ' è posto ad esempio il limite massimo di 10 Elementi/Oggetti
Dim b As Byte
' Ad ogni giro del ciclo crea una Label:
For b = 0 To Lblarray.Max
' E' interessante notare che in questo caso non è necessario creare uno specifico Oggetto da assegnare successivamente all'array, ma si può creare l'Oggetto usando direttamente un elemento dell'array medesimo:
With Lblarray[b] = New Label(Me)
.Border = Border.Raised
.W = 100
.H = 20
.X = b * 35
.Y = b * 40
.text = "Label " & CStr(b)
End With
Next
End
In quest'altro esempio, invece, si provvede a creare prima il singolo Oggetto grafico (una Label) e poi ad assegnarlo a un Elemento del vettore del medesimo tipo:
Public Sub Form_Open()
Dim llbb As New Label[8] ' è posto ad esempio il limite massimo di 8 Elementi/Oggetti
Dim lb As Label
Dim b As Byte
' Con un ciclo vengono create 8 "Label" e assegnate al vettore di tipo "Label":
For b = 0 To llbb.Max
With lb = New Label(Me)
.Border = Border.Raised
.X = b * 40
.Y = b * 40
.W = 30
.H = 20
.Alignment = Align.Center
.Text = CStr(b)
End With
' Assegna la variabile della "Label", appena creata, al vettore di tipo "Label":
llbb[b] = lb
Next
End
Creare un array di oggetti di tipo diverso
Come sappiamo, un array è un insieme di elementi del medesimo tipo. Per poter, dunque, creare un array che di fatto contenga oggetti di tipo diverso, sarà necessario individuare un tipo di variabile che possa a sua volta rappresentare, e dunque contenere tali Oggetti diversi. La variabile in questione è quella di tipo: Object, la quale si pone rispetto ai vari oggetti in un rapporto di genus ad speciem.
Nell'esempio seguente sarà creato un array di quattro diversi tipi di Oggetti (sul "Form" saranno creati dal codice un "Button", una "Label", un "ToggleButton" e una "TextArea"):
Public Sub Form_Open()
Dim b, n As Byte
Dim As Button
Dim lb As Label
Dim tb As ToggleButton
Dim ta As TextArea
Dim ogg As New Object[]
' Vengono creati sul Form 4 oggetti diversi ed assegnati all'Array di tipo "Object". Sono assegnati altresì a un unico Gruppo di gestione dei propri Eventi.
bt = New Button(Me) As "Oggetto"
ogg.Push(bt)
lb = New Label(Me) As "Oggetto"
ogg.Push(lb)
tb = New ToggleButton(Me) As "Oggetto"
ogg.Push(tb)
ta = New TextArea(Me) As "Oggetto"
ogg.Push(ta)
' Vengono modificate alcune proprietà di ciascun oggetto presente nell'Array:
For b = 0 To ogg.Max
With ogg[b]
.X = 10
.Y = n
.width = 150
.height = 40
.Font.Size = 7
.text = "Oggetto: " & ogg[b].Name
End With
n += 40
Next
End
Public Sub Oggetto_MouseUp()
' Se si clicca su uno dei 4 Controlli grafici, posti sul "Form", sulla barra del titolo del "Form" sarà indicato il Controllo cliccato:
Me.Title = "Oggetto premuto: " & Object.Type(Last)
End
Note
[1] Un Array o Vettore è un insieme di elementi del medesimo tipo. Pertanto un Array - ad esempio - del tipo Integer sarà un insieme di valori interi, conterrà solo valori di tipo Intero (ciascuno dunque occuperà 4 byte di memoria; o volendo ottenere la quantità di memoria occupata dal tipo Intero mediante una risorsa di Gambas potremo fare così: "Sizeof(gb.Integer)" ).