Creare array di oggetti
Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un array. |1|
Indice
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 ar As New Button[] Dim j As Byte For j = 0 To 9 bt = New Button(Me) As "bt" & j ar.Add(bt) Next For j = 0 To 9 With ar[j] .X = 10 .Y = 1 + (30 * j) .W = 60 .H = 30 End With 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 a As Integer Private b As Integer Public Sub Button1_Click() ' Crea una Label ogni qualvolta viene premuto Button1 Dim c, d As Integer b += 50 ' La sintassi "New Label(Me)" istruisce l'interprete ' che l'oggetto deve essere creato ed assegnato al Form (Parent): Lblarray[a] = New Label(Me) ' Viene mostrata la Label sul Form: With Lblarray[a] .Border = Border.Raised ' sono definite le caratteristiche della label... .W = 100 .H = 20 .X = b .Y = b .text = "Nuova Label" End With ' Viene incrementata la variabile relativa alla cella dell'array di indice 0: Inc a End
Creare un array indefinito di oggetti del medesimo tipo
Private i As Integer Private tasti As New Button[] Private ts_y As Integer Public Sub Button1_Click() Dim bt As Button bt = New Button(Me) As "tasto" tasti.Add(bt) With bt .X = 10 .Y = ts_y .width = 100 .height = 40 .text = "Tasto n. " & i End With ts_y += 40 i = i + 1 End Public Sub tasto_Click() ' Andiamo a verificare il tasto premuto Print "E' stato premuto il tasto n. " & tasti.Find(Last) |2| End
Creare un array di oggetti di tipo diverso
Come sappiamo, un array è un insieme di elementi del medesimo tipo. Per poter creare un array che di fatto contenga oggetti di tipo diverso, sarà necessario individuare, se possibile, 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 e species.
Nell'esempio seguente si creerà un array di quattro diversi tipi di oggetti. Si dovrà porre sul Form quattro Button, a ciascuno dei quali sarà attributo il nome "crea" come Gruppo, nonché il nome dell'oggetto da creare come parola della proprietà .Text. Quindi il codice sarà il seguente:
Private ogg As New Object[] Private i As Integer Private oy As Integer Public Sub Form_Open() End Public Sub crea_Click() Dim bt As Button Dim lb As Label Dim tb As ToggleButton Dim te As TextEdit Select Case Last.Text Case "Button" bt = New Button(Me) As "button" ogg.Add(bt) Case "Label" lb = New Label(Me) As "label" ogg.Add(lb) Case "ToggleButton" tb = New ToggleButton(Me) As "toggleButton" ogg.Add(tb) Case "TextEdit" te = New TextEdit(Me) As "textEdit" ogg.Add(te) End Select With ogg[i] .X = 10 .Y = oy .width = 150 .height = 40 .Font.Size = 7 .text = "Oggetto: " & ogg[i].Name End With oy += 40 i = i + 1 End
Note
[1] Un Array è un insieme di elementi del medesimo tipo. Pertanto un Array del tipo Integer sarà un insieme di valori interi.
[2] tasti.Find(Last) ritorna la posizione nell'array del "Button" creato che è stato premuto.