Creare array di oggetti: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 8: | Riga 8: | ||
Dim bt As Button | Dim bt As Button | ||
Dim | Dim arrBt As New Button[] | ||
Dim j As Byte | Dim j As Byte | ||
For j = 0 To 9 | For j = 0 To 9 | ||
<FONT color=006400>' ''La sintassi "New Button(Me)" istruisce l'interprete'' | |||
' ''che l'oggetto deve essere creato ed assegnato al "Form" ("Parent/Genitore"):''</font> | |||
With bt = New Button(Me) As "tasto" | |||
With | |||
.X = 10 | .X = 10 | ||
.Y = 1 + (30 * j) | .Y = 1 + (30 * j) | ||
| Riga 25: | Riga 22: | ||
.H = 30 | .H = 30 | ||
End With | End With | ||
<FONT color=#006400>' ''Si assegna il nuovo "Button creato al vettore di tipo dell'oggetto "Button":''</font> | |||
arrBt.<FONT color=#B22222>Add(bt)</font> | |||
Next | |||
'''End''' | '''End''' | ||
| Riga 42: | Riga 43: | ||
Dim c, d As Integer | Dim c, d As Integer | ||
b += 50 | |||
With Lblarray[a] = New Label(Me) | |||
.Border = Border.Raised <Font Color= #006400>' ''sono definite le caratteristiche della label...''</font> | |||
.W = 100 | |||
.H = 20 | |||
.X = b | |||
.Y = b | |||
.text = "Nuova Label" | |||
End With | |||
<Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font> | <Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font> | ||
Inc a | |||
'''End''' | '''End''' | ||
| Riga 91: | Riga 87: | ||
==Creare un array indefinito di oggetti del medesimo tipo== | ==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''' i As Integer | ||
'''Private''' tasti As New Button[] | '''Private''' tasti As New Button[] | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Dim bt As Button | |||
With bt | With bt = New Button(Me) As "tasto" | ||
.X = 10 | .X = 10 | ||
.Y = | .Y = 40 * i | ||
. | .Width = 100 | ||
. | .Height = 40 | ||
.text = "Tasto n. " & i | .text = "Tasto n. " & i | ||
End With | End With | ||
tasti.<FONT color=#B22222>Add(bt)</font> | |||
i | Inc i | ||
'''End''' | '''End''' | ||
| Riga 177: | Riga 170: | ||
i = i + 1 | i = i + 1 | ||
'''End''' | |||
==Creare un vettore di oggetti, ma assegnando ciascuno di quegli oggetto ad un ''Gruppo'' diverso== | |||
Nei paragrafi precedenti, laddove gli oggetti creati, per essere successivamente assegnati ad un vettore, sono stati inclusi anche in un ''Gruppo' avente la caratteristica di essere l'unico ed il medesimo per tutti gli oggetti creati. | |||
<BR>E' possibile, erò, anche creare un vettore di più oggetti attribuendo ciascuno di essi ad un ''Gruppo'' diverso, il quale, così, verrà ad essere costituito da un solo oggetto. | |||
Per fare ciò si attribuirà come nome del nuovo ''Gruppo'' uno o più caratteri alfanumerici diversi dagli altri, oppure ad un nome base si aggiungerà di volta in volta un carattere, lettera o numero: | |||
'''Public''' Sub Form_Open() | |||
Dim bt As Button | |||
Dim ar As New Button[] | |||
Dim j As Byte | |||
For j = 0 To 9 | |||
with bt = New Button(Me) As <FONT color=#B22222>"bt" & '''j'''</font> | |||
.X = 10 | |||
.Y = 1 + (30 * j) | |||
.W = 60 | |||
.H = 30 | |||
End With | |||
ar.Add(bt) | |||
Next | |||
'''End''' | '''End''' | ||
| Riga 185: | Riga 206: | ||
==Note== | ==Note== | ||
[1] Un ''Array'' è un insieme di elementi del medesimo tipo. Pertanto un ''Array'' del tipo Integer sarà un insieme di valori ''interi''. | [1] Un ''Array'' o ''Vettore'' è 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 | [2] ''tasti.Find(Last)'' ritorna la posizione nel vettore del ''Button'' creato che in questo caso è stato premuto. | ||
Versione delle 18:37, 26 giu 2013
Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un array o vettore.. |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 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
With Lblarray[a] = New Label(Me)
.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
altro esempio:
Public Sub Button1_Click()
Dim a As New Label[3]
Dim b As Label
Dim j As Byte
For j = 0 To 2
With b = New Label(Me)
.Border = Border.Raised
.X = (10 * j) * 4
.Y = 10
.W = 20
.H = 20
End With
a[j] = b
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) |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, 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
Creare un vettore di oggetti, ma assegnando ciascuno di quegli oggetto ad un Gruppo diverso
Nei paragrafi precedenti, laddove gli oggetti creati, per essere successivamente assegnati ad un vettore, sono stati inclusi anche in un Gruppo' avente la caratteristica di essere l'unico ed il medesimo per tutti gli oggetti creati.
E' possibile, erò, anche creare un vettore di più oggetti attribuendo ciascuno di essi ad un Gruppo diverso, il quale, così, verrà ad essere costituito da un solo oggetto.
Per fare ciò si attribuirà come nome del nuovo Gruppo uno o più caratteri alfanumerici diversi dagli altri, oppure ad un nome base si aggiungerà di volta in volta un carattere, lettera o numero:
Public Sub Form_Open()
Dim bt As Button
Dim ar As New Button[]
Dim j As Byte
For j = 0 To 9
with bt = New Button(Me) As "bt" & j
.X = 10
.Y = 1 + (30 * j)
.W = 60
.H = 30
End With
ar.Add(bt)
Next
End
Note
[1] Un Array o Vettore è 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 nel vettore del Button creato che in questo caso è stato premuto.