Differenza fra la proprietà ".Children" e la proprietà ".Controls" di un oggetto

Da Gambas-it.org - Wikipedia.
Versione del 15 lug 2014 alle 13:27 di Vuott (Discussione | contributi) (Creata pagina con '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à men...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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, della 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