Richiamare e gestire più oggetti assegnati a variabili con medesimo identificatore

Da Gambas-it.org - Wikipedia.

Usando un ciclo per creare più Oggetti, è possibile attribuire a essi il medesimo identificatore di variabile.

Di seguito mostriamo due modalità per richiamare e gestire nel prosieguo del codice glli Oggetti creati come sopra descritto.


Assegnando gli Oggetti a un vettore del loro medesimo tipo

Affinché nel codice i suddetti Oggetti possano essere richiamati e gestiti, si potrà assegnare ciascuno di essi a un elemento di un vettore del medesimo tipo di dato.
In tal modo, pur non potendo via codice aggiungere all'identificatore di ciascuna variabile un numero progressivo, si utilizzerà - come alternativa - la progressività numerica del vettore.

Nell'esempio che segue, saranno creati sul Form cinque Button, che verranno assegnati a cinque variabili del medesimo tipo ed aventi medesima denominazione (identificatore). Le cinque variabili saranno assegnate ad una variabile vettore (array) di tipo "Button[]". Ciascuna variabile così avrà come riferimento un indice del vettore. Ciascun Button potrà così essere gestito indirettamente: attraverso il vettore al quale è stato assegnato. In particolare, ogni variabile di tipo Button sarà individuata sulla base dell'indice dell'elemento che la contiene.

Private vettBt As New Button[]


Public Sub Form_Open()

 Dim j As Byte
 Dim bt As Button
 
 For j = 0 To 4
   With bt = New Button(Me) As "Butt"
     .W = 30
     .H = 20
     .X = 50 * j
     .Y = 50
   End With
' Dopo aver creato il "Button", la rispettiva variabile viene assegnata ad un vettore di tipo "Button[]":
   vettBt.Push(bt)
 Next

End


Public Sub Butt_Click()
 
 Dim b As Byte
 
' Scegliamo il numero di "indice" dell'array:
 b = Val(InputBox("Immetti un numero da 0 a 4:"))
   
' Così abbiamo la possibilità di individuare la variabile del "Button" in base ad un numero comunque progressivo, e quindi gestire l'Oggetto:
 vettBt[b].Delete
 
End


Usando l'Istruzione "Last"

Più semplicemente si potrà impegnare l'istruzione Last, evitando così l'uso di un vettore.

Public Sub Form_Open()

 Dim b As Byte
 Dim bt As Button
 
 For b = 0 To 4
   With bt = New Button(Me) As "Butt"
     .W = 30
     .H = 20
     .X = 50 * b
     .Y = 50
   End With
 Next

End


Public Sub Butt_Click()

 Last.Delete
 
End