Scusa la domanda Come si fa?
Un esempio lampante lo hai proprio nel codice sopra, ad esempio alla riga:
...New TextLabel(w) As "tl"
la parte essenziale per la questione del Gruppo è quel
As "tl" . In sostanza là ho assegnato ogni
TextLabel, che viene creata, al Gruppo chiamato "
tl" . Ogni oggetto appartente a quel Gruppo
tl viene posto sotto osservazione al fine di associare ogni evento agli oggetti appartenenti a quel Gruppo... e viceversa.
All'interno della routine scatenata dall'evento dovrai poi individuare quale oggetto ha effettivamente scatenato quell'evento.
Mi permetto di fare un altro esempio, questa volta semplice. Creiamo due oggetti diversi, che però attribuiremo al medesimo Gruppo:
' Innanzitutto dichiariamo i due oggetti che vogliamo creare:
Private b As Button
Private l As Label
Public Sub Form_Open()
' Cominciamo a creare il Button:
' Istanzio un nuovo Button, il cui genitore è Me (il Form principale)
' ed il Gruppo di appartenenza si chiama "alibaba"
With b = New Button(Me) As "alibaba"
.W = 30
.H = 30
.X = 30
.Y = 30
' Attribuisco un nome al Button per distiguerlo
' successivamente dalla Label:
.Name = "but"
End With
' Poi istanzio una nuova Label, il cui genitore è Me (il Form principale)
' ed il Gruppo di appartenenza di chiama "alibaba"......insomma lo stesso del "Button":
With l = New Label(Me) As "alibaba"
.W = 30
.H = 30
.X = 30
.Y = 70
.Background = &000000
' Attribuisco un nome ala Label per distiguerla
' successivamente dal Button:
.Name = "lab"
End With
End
' A questo punto abbiamo un Gruppo, "alibaba",
' al quale appartengono due oggetti: un Button ed una Label.
' Se si preme su un oggetto (...sono costretto ad usare l'evento _MouseDown, poiché
' la Label non prevede l'evento _Click; quindi uso un evento comune in questo caso
' ad entrambi gli oggetti) appartenente al Gruppo "alibaba", si scatena l'evento:
Public Sub alibaba_MouseDown()
' Andiamo a distinguere quale dei due oggetti è stato premuto:
Select Case Last.Name
' Se l'oggetto premuto ha il "name": but ...
Case "but"
Print "Button"
' oppure anche così:
Print Object.Type(Last)
' Se l'oggetto premuto ha il "name": lab ...
Case "lab"
Print "Label"
' oppure anche così:
Print Object.Type(Last)
End Select
End
Come parametro per la distinzione degi due oggetti, oltre al
Name, potrei utilizzare anche altre loro proprietà.
Che la creazione di un oggetto, via codice, avvenga in modo ben determinato od in modo casuale, non è importante ai fini dell'attribuzione del Gruppo loro di appartenza.