Differenze tra le versioni di "Raggiungere e gestire gli oggetti di FMain da una classe secondaria"

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
 
<BR>2) nella finestra, che compare, scegliere la scheda "''Opzioni''";
 
<BR>2) nella finestra, che compare, scegliere la scheda "''Opzioni''";
 
<BR>3) nella scheda delle "Opzioni" attivare (cambiare da NO a Sì) all'opzione: «''I controlli del form sono "Public"''».</p>
 
<BR>3) nella scheda delle "Opzioni" attivare (cambiare da NO a Sì) all'opzione: «''I controlli del form sono "Public"''».</p>
 +
 +
 +
 +
<P>In alternativa si potrà sperimentare anche il seguente codice:
 +
<BR>(nella classe secondaria Cmia.class)</p>
 +
 +
'''Public''' Sub cmiaSec(testo As String)
 +
 
 +
  Dim obj, objsub As Object
 +
  Dim a As Byte = 2
 +
 +
  For Each obj In FMain.Children
 +
 +
    Select Case obj.Name
 +
      Case "Button1"
 +
        obj.Caption = "Button"
 +
      Case "Label1"
 +
        obj.Caption = "Label"
 +
    End Select
 +
 +
    If Object.Type(obj) = "Panel" Then
 +
      For Each objsub In obj.Children
 +
        If Object.Type(objsub) = "Button" Then
 +
          objsub.Text = testo
 +
        Endif
 +
      Next
 +
    Endif
 +
 +
  Next
 +
 +
'''End'''

Versione delle 20:11, 5 mar 2012

In un progetto didattico supponiamo di avere un Form principale, sul quale sono posti un Button (che chiameremo: "Button1") ed una Label (che chiameremo: "Label1"), nonché un contenitore Panel (che chiameremo: "Panel1") contenente a sua volta due Label ("Label2" e "Label3").
Nel programma è presente anche una classe secondaria, che per l'occasione chiameremo "Cmia.class", istanziata ovviamente nella classe principale "FMain.class".

Scopo del programma didattico è quello di gestire tutti i suddetti oggetti di FMain mediante istruzioni poste nella classe secondaria "Cmia.class". In particolare il programma didattico dovrà assegnare a "Button1" e a "Label1" la Caption: "luna", mentre a "Label2" ed a "Label3" la Caption: "sole".

Il modo più semplice di gestire oggetti presenti nel Form da una classe secondaria è quella di poterli richiamare direttamente all'interno della classe secondaria medesima, ossia poter scrivere così:
FMain.Button1.Caption = "luna";
FMain.Label1.Caption = "luna";
FMain.Label2.Caption = "sole"
FMain.Label3.Caption = "sole"

Per far sì che gli oggetti presenti nel Form principale siano richiamabili da una classe secondaria è necessario rendere publici i controlli del Form. Ciò si farà così:
1) in alto a sinistra nel menu cliccare su: "Progetto", quindi "Proprietà";
2) nella finestra, che compare, scegliere la scheda "Opzioni";
3) nella scheda delle "Opzioni" attivare (cambiare da NO a Sì) all'opzione: «I controlli del form sono "Public"».


In alternativa si potrà sperimentare anche il seguente codice:
(nella classe secondaria Cmia.class)

Public Sub cmiaSec(testo As String)
 
 Dim obj, objsub As Object
 Dim a As Byte = 2

 For Each obj In FMain.Children

   Select Case obj.Name
     Case "Button1" 
       obj.Caption = "Button"
     Case "Label1"
       obj.Caption = "Label"
   End Select

   If Object.Type(obj) = "Panel" Then
     For Each objsub In obj.Children
       If Object.Type(objsub) = "Button" Then
         objsub.Text = testo
       Endif
     Next
   Endif

 Next

End