Differenze tra le versioni di "Differenza fra la proprietà ".Children" e la proprietà ".Controls" di un oggetto"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
La guida ci dice che la proprietà
+
La guida ci dice che la Proprietà
 
  .Children
 
  .Children
eventualmente posseduta da un oggetto, si riferisce a tutti gli oggetti inclusi nel contenitore che possiede tale proprietà
+
si riferisce a tutti gli Oggetti inclusi <SPAN style="text-decoration:underline">nel solo</span> Contenitore che possiede tale Proprietà.
  
mentre la proprietà
+
Invece la Proprietà
 
  .Controls
 
  .Controls
si riferisce a tutti gli oggetti comunque appartenenti alla <SPAN style="text-decoration:underline">finestra</span> che possiede tale proprietà.
+
si riferisce a tutti gli Oggetti comunque contenuti alla <SPAN style="text-decoration:underline">finestra</span> del Contenitore che possiede tale Proprietà.
  
  
La differenza sta nel fatto che la proprietà ''.Children'' restituirà un vettore degli oggetti contenuti nel <SPAN style="text-decoration:underline">solo</span> contenitore, del quale stiamo utilizzando quella proprietà.
+
La differenza sta nel fatto che la Proprietà "''.Children'' " restituirà un vettore degli Oggetti contenuti <SPAN style="text-decoration:underline">nel solo</span> Contenitore, del quale stiamo utilizzando quella proprietà, escludendo gli eventuali Oggetti contenuti in altri Contenitori del suo medesimo rango gerarchico.
 
+
<BR>Se, dunque, per esempio su un ''Form'' abbiamo due Contenitori di tipo "Panel", i quali contengono al loro interno uno o più Oggetti, la Proprietà "''.Children'' " di un "Panel" restituirà <SPAN style="text-decoration:underline">soltanto</span> gli Oggetti ''Figli'' di questo "Panel", ossia da esso contenuti.
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.
 
  
 +
Invece la Proprietà "''.Controls'' " restituirà un vettore di <SPAN style="text-decoration:underline">tutti</span> gli Oggetti comunque contenuti all'interno del Contenitore. Così, se nelContenitore sono stati posti degli Oggetti, e fra essi anche dei Contenitori che a loro volta contengono Oggetti alcuni dei quali che siano magari anche altri Contenitori contenenti Oggetti (insomma tutto in una gerarchia parentale discendente), ebbene, la Proprietà ''.Controls'' del Contenitore principale prenderà in considerazione <SPAN style="text-decoration:underline">tutti gli Oggetti comunque in esso presenti</span> (anche se sono contenuti in Contenitori ''Figli'' del Contenitore principale, purché ovviamente tali Contenitori appartengano in rapporto gerarchico al Contenitore principale).
 +
<BR>Pertanto, riprendendo l'esempio precedente, la Proprietà "''.Controls'' " del ''Form'' prenderà in considerazione non solo i due Oggetti di tipo "Panel", ma anche gli Oggetti contenuti in questi due "Panel".
 +
  
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''.
+
Facciamo un esempio codificato, 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''.
 
<BR>Il codice Gambas sarà poi il seguente:
 
<BR>Il codice Gambas sarà poi il seguente:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
 
   Dim ob As Object
 
   Dim ob As Object
 
+
   
    
+
   Print "Oggetti visti dalla proprietà '.Children':"
  Print "Oggetti visti dalla proprietà '.Children':"
+
  For Each ob In FMain.Children
  For Each ob In FMain.Children
+
    Print ob.Name
    Print ob.Name
+
  Next
  Next
+
  Print "---------------------"
 
  Print "---------------------"
 
 
   
 
   
  Print "Oggetti visti dalla proprietà '.Controls':"
+
  Print "Oggetti visti dalla proprietà '.Controls':"
  For Each ob In FMain.Controls
+
  For Each ob In FMain.Controls
    Print ob.Name
+
    Print ob.Name
  Next
+
  Next
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 48: Riga 48:
 
<BR>TextLabel1
 
<BR>TextLabel1
 
<BR>Label2</i>
 
<BR>Label2</i>
 +
 +
La Proprietà "''.Children'' " dell'Oggetto Contenitore "Form" ha preso in considerazione <SPAN style="text-decoration:underline">soltanto</span> gli Oggetti strettamente considerati ''Figli'' del "Form". Invece la proprietà "''.Controls'' " ha preso in considerazione <SPAN style="text-decoration:underline">tutti</span> gli Oggetti situati a qualsiasi titolo - ossia anche se ''Figli'' di altri Contenitori (purché posti nel "Form") - sul "Form".

Versione delle 09:46, 25 ott 2020

La guida ci dice che la Proprietà

.Children

si riferisce a tutti gli Oggetti inclusi nel solo Contenitore che possiede tale Proprietà.

Invece la Proprietà

.Controls

si riferisce a tutti gli Oggetti comunque contenuti alla finestra del Contenitore 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à, escludendo gli eventuali Oggetti contenuti in altri Contenitori del suo medesimo rango gerarchico.
Se, dunque, per esempio su un Form abbiamo due Contenitori di tipo "Panel", i quali contengono al loro interno uno o più Oggetti, la Proprietà ".Children " di un "Panel" restituirà soltanto gli Oggetti Figli di questo "Panel", ossia da esso contenuti.

Invece la Proprietà ".Controls " restituirà un vettore di tutti gli Oggetti comunque contenuti all'interno del Contenitore. Così, se nelContenitore sono stati posti degli Oggetti, e fra essi anche dei Contenitori che a loro volta contengono Oggetti alcuni dei quali che siano magari anche altri Contenitori contenenti Oggetti (insomma tutto in una gerarchia parentale discendente), ebbene, la Proprietà .Controls del Contenitore principale prenderà in considerazione tutti gli Oggetti comunque in esso presenti (anche se sono contenuti in Contenitori Figli del Contenitore principale, purché ovviamente tali Contenitori appartengano in rapporto gerarchico al Contenitore principale).
Pertanto, riprendendo l'esempio precedente, la Proprietà ".Controls " del Form prenderà in considerazione non solo i due Oggetti di tipo "Panel", ma anche gli Oggetti contenuti in questi due "Panel".


Facciamo un esempio codificato, 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

La Proprietà ".Children " dell'Oggetto Contenitore "Form" ha preso in considerazione soltanto gli Oggetti strettamente considerati Figli del "Form". Invece la proprietà ".Controls " ha preso in considerazione tutti gli Oggetti situati a qualsiasi titolo - ossia anche se Figli di altri Contenitori (purché posti nel "Form") - sul "Form".