Differenza fra la proprietà ".Children" e la proprietà ".Controls" di un oggetto
La guida ci dice che la proprietà
.Children
eventualmente posseduta da un oggetto, si riferisce a tutti gli oggetti inclusi nel contenitore che possiede tale proprietà
mentre la proprietà
.Controls
si riferisce a tutti gli oggetti comunque appartenenti alla finestra che possiede tale proprietà.
La differenza sta nel fatto che la proprietà .Children restituirà un vettore degli oggetti contenuti nel solo contenitore, del quale stiamo utilizzando quella proprietà.
Invece la proprietà .Controls restituirà un vettore degli oggetti contenuti comunque all'interno della finestra. Così, se nella finestra sono stati posti degli oggetti e fra essi anche dei contenitori che contengono oggetti, che siano magari anche altri contenitori a loro volta contenenti oggetti, insomma il tutto in una gerarchia parentale discendente; ebbene, la proprietà .Controls prenderà in considerazione tutti gli oggetti comunque presenti nella finestra, anche se sono contenuti in Contenitori; purché tali Contenitori appartengano in rapporto gerarchico alla finestra in questione.
Facciamo un esempio esplicativo, nel quale poniamo su un Form un Button ed una Label. Poniamo anche un Contenitore Frame all'interno del quale saranno posti una TextArea, un Dial ed un Contenitore Panel. Nel Panel porremo una TextLabel ed una Label.
Il codice Gambas sarà poi il seguente:
Public Sub Form_Open() Dim ob As Object Print "Oggetti visti dalla proprietà '.Children':" For Each ob In FMain.Children Print ob.Name Next Print "---------------------" Print "Oggetti visti dalla proprietà '.Controls':" For Each ob In FMain.Controls Print ob.Name Next End
Il risultato finale in console sarà il seguente:
Oggetti visti dalla proprietà '.Children':
Label1
Button1
Frame1
---------------------
Oggetti visti dalla proprietà '.Controls':
Label1
Button1
Frame1
TextArea1
Dial1
Panel1
TextLabel1
Label2