Creare array di oggetti: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un [http://it.wikipedia.org/wiki/Array array] o ''vettore''. | Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un [http://it.wikipedia.org/wiki/Array array] o ''vettore''. <SUP>[[[#Note|nota 1]]]</sup> | ||
| Riga 116: | Riga 116: | ||
'''Public''' Sub tasto_Click() <FONT color=gray>' ''Andiamo a verificare il tasto premuto''</font> | '''Public''' Sub tasto_Click() <FONT color=gray>' ''Andiamo a verificare il tasto premuto''</font> | ||
Print "E' stato premuto il tasto n. " & tasti.Find(Last) | Print "E' stato premuto il tasto n. " & tasti.Find(Last) <SUP>[[[#Note|nota 2]]]</sup> | ||
'''End''' | '''End''' | ||
Versione delle 03:29, 28 nov 2016
Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un array o vettore. [nota 1]
Semplice codice basilare per la creazione di un array del tipo di un oggetto
In questo caso l'array sarà creato e riempito immediatamente con gli oggetti del tipo stabilito:
Public Sub Form_Open()
Dim bt As Button
Dim arrBt As New Button[]
Dim j As Byte
For j = 0 To 9
' La sintassi "New Button(Me)" istruisce l'interprete
' che l'oggetto deve essere creato ed 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 "Button":
arrBt.Add(bt)
Next
End
Creare un array di dimensioni definite a priori
In questo caso viene posto a priori un limite massimo agli elementi dell'array. L'array sarà riempito di volta in volta che si preme un tasto:
Private Lblarray As New Label[10] ' è posto il limite massimo a 10 oggetti
Private i As Integer
Private n As Integer
Public Sub Button1_Click() ' Crea una Label ogni qualvolta viene premuto Button1
' Impedisce che venga superato il limite stabilito di Label da creare:
If i = Lblarray.count Then Return
n += 30
With Lblarray[i] = New Label(Me)
.Border = Border.Raised ' sono definite le caratteristiche della label...
.W = 100
.H = 20
.X = n
.Y = n
.text = "Nuova Label " & CStr(i)
End With
' Viene incrementata la variabile relativa all'indice dell'array:
Inc i
End
altro esempio:
Public Sub Form_Open()
Dim llbb As New Label[3]
Dim lb As Label
Dim b As Byte
' Con un ciclo vengono create 3 Label ed assegnate al vettore di tipo "Label":
For b = 0 To 2
With lb = New Label(Me)
.Border = Border.Raised
.X = b * 40
.Y = 10
.W = 20
.H = 20
.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 indefinito di oggetti del medesimo tipo
Nell'esempio, che segue, ogni volta che si clicca sul Button viene creato un nuovo Button sul Form:
Private i As Integer
Private tasti As New Button[]
Public Sub Button1_Click()
Dim bt As Button
With bt = New Button(Me) As "tasto"
.X = 10
.Y = 40 * i
.Width = 100
.Height = 40
.text = "Tasto n. " & i
End With
tasti.Add(bt)
Inc i
End
Public Sub tasto_Click() ' Andiamo a verificare il tasto premuto
Print "E' stato premuto il tasto n. " & tasti.Find(Last) [nota 2]
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:
Public Sub Form_Open()
Dim b, n As Byte
Dim bt As Button
Dim lb As Label
Dim tb As ToggleButton
Dim te As TextEdit
Dim ogg As New Object[]
' Vengono creati sul Form 4 oggetti diversi ed assegnati all'Array di tipo "Object":
bt = New Button(Me) As "button"
ogg.Push(bt)
lb = New Label(Me) As "label"
ogg.Push(lb)
tb = New ToggleButton(Me) As "toggleButton"
ogg.Push(tb)
te = New TextEdit(Me) As "textEdit"
ogg.Push(te)
' 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
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).
[2] tasti.Find(Last) ritorna la posizione nel vettore del Button creato che in questo caso è stato premuto.