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

Da Gambas-it.org - Wikipedia.
 
(9 versioni intermedie di uno stesso utente non sono mostrate)
Riga 5: Riga 5:
 
Invece la Proprietà
 
Invece la Proprietà
 
  '''.Controls'''
 
  '''.Controls'''
si riferisce a tutti gli Oggetti comunque contenuti alla <SPAN style="text-decoration:underline">finestra</span> del Contenitore che possiede tale Proprietà.
+
si riferisce a tutti gli Oggetti grafici  <SPAN style="text-decoration:underline">comunque</span> contenuti dalla <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 <SPAN style="text-decoration:underline">nel solo</span> Contenitore ''Padre'', del quale stiamo utilizzando quella Proprietà, <SPAN style="text-decoration:underline">escludendo i Controlli contenuti in altri eventuali Contenitori</span> del suo medesimo rango gerarchico.
+
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à, <SPAN style="text-decoration:underline">escludendo i Controlli contenuti in altri eventuali Contenitori</span> 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.
+
<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 di <SPAN style="text-decoration:underline">tutti</span> gli Oggetti comunque contenuti all'interno del Contenitore. Così, se in un Contenitore principale sono stati posti degli Oggetti grafici, e fra essi anche altri Contenitori (quindi ''Figli'' del Contenitore principale) che a loro volta contengono vari Controlli, alcuni dei quali che siano magari ulteriori Contenitori contenenti Oggetti grafici (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 ''Padre'', purché ovviamente tali Contenitori ''Figli'' appartengano in rapporto gerarchico al Contenitore principale ''Padre'').
 
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 in un Contenitore principale sono stati posti degli Oggetti grafici, e fra essi anche altri Contenitori (quindi ''Figli'' del Contenitore principale) che a loro volta contengono vari Controlli, alcuni dei quali che siano magari ulteriori Contenitori contenenti Oggetti grafici (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 ''Padre'', purché ovviamente tali Contenitori ''Figli'' appartengano in rapporto gerarchico al Contenitore principale ''Padre'').
Riga 15: Riga 15:
 
   
 
   
  
Facciamo un esempio, 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'' e un Contenitore ''Panel''. Nel ''Panel'' porremo una ''TextLabel'' ed una ''Label''.
+
Facciamo un esempio, nel quale poniamo su un ''Form'' un ''Button'' ed una ''Label''. Poniamo anche un Contenitore ''Panel'' all'interno del quale saranno posti una ''TextArea'', uno ''Slider'' e un Contenitore ''Panel''. In questo ''Panel'' porremo una ''TextLabel'', una ''Label'' e un ''Panel''. In quest'ultimo ''Panel'' porremo un ''RadioButton'' e una ''ProgressBar''.
 
<BR>Il codice Gambas sarà poi il seguente:
 
<BR>Il codice Gambas sarà poi il seguente:
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
Riga 21: Riga 21:
 
   Dim ob As Object
 
   Dim ob As Object
 
      
 
      
   Print "Oggetti visti dalla proprietà '.Children':"
+
   Print "Oggetti visti dalla Proprietà '\e[1m\e[31m.Children\e[0m':"
   For Each ob In FMain.Children
+
   For Each ob In FMain'''.Children'''
 +
<FONT Color=gray>' ''Poiché in questo esempio il Contenitore principale è il "Form" principale, allora si potrà scrivere anche così:''
 +
' '''''For Each ob In Me.Children'''''</font>
 
     Print ob.Name
 
     Print ob.Name
 
   Next
 
   Next
   Print "---------------------"
+
   Print "=========================================="
 
   
 
   
   Print "Oggetti visti dalla proprietà '.Controls':"
+
   Print "Oggetti visti dalla Proprietà '\e[1m\e[32m.Controls\e[0m':"
   For Each ob In FMain.Controls
+
   For Each ob In FMain'''.Controls'''
 +
<FONT Color=gray>' ''Poiché in questo esempio il Contenitore principale è il "Form" principale, allora si potrà scrivere anche così:''
 +
' '''''For Each ob In Me.Controls'''''</font>
 
     Print ob.Name
 
     Print ob.Name
 
   Next
 
   Next
Riga 34: Riga 38:
 
  End
 
  End
 
Il risultato finale in console sarà il seguente:
 
Il risultato finale in console sarà il seguente:
<I><BR>Oggetti visti dalla proprietà '.Children':
+
 
 +
<I>Oggetti visti dalla Proprietà '.Children':
 +
<BR>Button1
 
<BR>Label1
 
<BR>Label1
 +
<BR>Panel1
 +
<BR>=======================
 +
<BR>Oggetti visti dalla Proprietà '.Controls':
 
<BR>Button1
 
<BR>Button1
<BR>Frame1
 
<BR>---------------------
 
<BR>Oggetti visti dalla proprietà '.Controls':
 
 
<BR>Label1
 
<BR>Label1
<BR>Button1
+
<BR>Panel1
<BR>Frame1
 
 
<BR>TextArea1
 
<BR>TextArea1
<BR>Dial1
+
<BR>Slider1
<BR>Panel1
+
<BR>Panel2
 
<BR>TextLabel1
 
<BR>TextLabel1
<BR>Label2</i>
+
<BR>Label2
 +
<BR>Panel3
 +
<BR>RadioButton1
 +
<BR>ProgressBar1</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" (i Controlli gerarchicamente ''Figli'' di primo livello del ''Form'' ''Padre''). Invece la Proprietà ".Controls" ha preso in considerazione <SPAN style="text-decoration:underline">tutti</span> gli Oggetti situati sul "Form" a qualsiasi titolo, ossia anche se ''Figli'' di altri Contenitori (purché ovviamente posti a qualsasi livello gerarchico nel ''Form'' ''Padre'').
+
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" (i Controlli gerarchicamente ''Figli'' di primo livello del ''Form'' ''Padre''). Invece la Proprietà ".Controls" ha preso in considerazione <SPAN style="text-decoration:underline">tutti</span> gli Oggetti situati sul "Form" a qualsiasi titolo e a qualsiasi livello gerarchico, ossia anche se ''Figli'' di altri Contenitori (purché ovviamente posti nel ''Form'' ''Padre'').

Versione attuale delle 03:13, 26 lug 2023

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 grafici comunque contenuti dalla 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 i Controlli contenuti in altri eventuali 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 in un Contenitore principale sono stati posti degli Oggetti grafici, e fra essi anche altri Contenitori (quindi Figli del Contenitore principale) che a loro volta contengono vari Controlli, alcuni dei quali che siano magari ulteriori Contenitori contenenti Oggetti grafici (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 Padre, purché ovviamente tali Contenitori Figli appartengano in rapporto gerarchico al Contenitore principale Padre).
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 grafici contenuti in questi due Panel.


Facciamo un esempio, nel quale poniamo su un Form un Button ed una Label. Poniamo anche un Contenitore Panel all'interno del quale saranno posti una TextArea, uno Slider e un Contenitore Panel. In questo Panel porremo una TextLabel, una Label e un Panel. In quest'ultimo Panel porremo un RadioButton e una ProgressBar.
Il codice Gambas sarà poi il seguente:

Public Sub Form_Open()

 Dim ob As Object
   
 Print "Oggetti visti dalla Proprietà '\e[1m\e[31m.Children\e[0m':"
 For Each ob In FMain.Children
' Poiché in questo esempio il Contenitore principale è il "Form" principale, allora si potrà scrivere anche così:
' For Each ob In Me.Children
   Print ob.Name
 Next
 Print "=========================================="

 Print "Oggetti visti dalla Proprietà '\e[1m\e[32m.Controls\e[0m':"
 For Each ob In FMain.Controls
' Poiché in questo esempio il Contenitore principale è il "Form" principale, allora si potrà scrivere anche così:
' For Each ob In Me.Controls
   Print ob.Name
 Next

End

Il risultato finale in console sarà il seguente:

Oggetti visti dalla Proprietà '.Children':
Button1
Label1
Panel1
=======================
Oggetti visti dalla Proprietà '.Controls':
Button1
Label1
Panel1
TextArea1
Slider1
Panel2
TextLabel1
Label2
Panel3
RadioButton1
ProgressBar1

La Proprietà ".Children" dell'Oggetto Contenitore Form ha preso in considerazione soltanto gli Oggetti strettamente considerati Figli del "Form" (i Controlli gerarchicamente Figli di primo livello del Form Padre). Invece la Proprietà ".Controls" ha preso in considerazione tutti gli Oggetti situati sul "Form" a qualsiasi titolo e a qualsiasi livello gerarchico, ossia anche se Figli di altri Contenitori (purché ovviamente posti nel Form Padre).