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

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
 
<P>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".</p>
 
<P>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".</p>
 
<P>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ì:
 
<P>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ì:
<BR><Font Color= #B22222>FMain.Button1.Caption = "luna"''</font>;
+
<BR><Font Color= #B22222>FMain.Button1.Caption = "luna"''</font>
<BR><Font Color= #B22222>FMain.Label1.Caption = "luna"''</font>;
+
<BR><Font Color= #B22222>FMain.Label1.Caption = "luna"''</font>
 
<BR><Font Color= #B22222>FMain.Label2.Caption = "sole"''</font>
 
<BR><Font Color= #B22222>FMain.Label2.Caption = "sole"''</font>
 
<BR><Font Color= #B22222>FMain.Label3.Caption = "sole"''</font></p>
 
<BR><Font Color= #B22222>FMain.Label3.Caption = "sole"''</font></p>
<P>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ì:
+
<P>Per far sì che gli oggetti presenti nel Form principale siano richiamabili da una classe secondaria è necessario rendere ''pubblici'' i controlli del Form. Ciò si farà così:
<BR>1) in alto a sinistra nel menu cliccare su: "''Progetto''", quindi "''Proprietà''";
+
<BR>1) in alto a sinistra nel menu cliccare su: "''Progetto'' ", quindi "''Proprietà'' ";
<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ì) l'opzione: «''I controlli del form sono "Public"''».</p>
  
  
 
+
In alternativa nella classe secondaria "Cmia.class" si potrà sperimentare anche un codice del tipo seguente:
<P>In alternativa si potrà sperimentare anche il seguente codice:
+
''<Font Color= #006400>' il seguente codice è scritto nella classe secondaria Cmia.class:''</font>
<BR>(nella classe secondaria Cmia.class)</p>
+
 
+
  Public Sub cmiaSec(testo As String)
  '''Public''' Sub cmiaSec(testo As String)
+
 
 
 
   Dim obj, objsub As Object
 
   Dim obj, objsub As Object
  Dim a As Byte = 2
 
 
   
 
   
 
   For Each obj In FMain.Children
 
   For Each obj In FMain.Children
 
 
     Select Case obj.Name
 
     Select Case obj.Name
 
       Case "Button1"  
 
       Case "Button1"  
         obj.Caption = "Button"
+
         obj.Caption = "luna"
 
       Case "Label1"
 
       Case "Label1"
         obj.Caption = "Label"
+
         obj.Caption = "luna"
 
     End Select
 
     End Select
 
   
 
   
 
     If Object.Type(obj) = "Panel" Then
 
     If Object.Type(obj) = "Panel" Then
 
       For Each objsub In obj.Children
 
       For Each objsub In obj.Children
         If Object.Type(objsub) = "Button" Then
+
         If Object.Type(objsub) = "Label" Then
           objsub.Text = testo
+
           objsub.Caption = "sole"
 
         Endif
 
         Endif
 
       Next
 
       Next
 
     Endif
 
     Endif
 
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 08:59, 30 lug 2023

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 pubblici 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ì) l'opzione: «I controlli del form sono "Public"».


In alternativa nella classe secondaria "Cmia.class" si potrà sperimentare anche un codice del tipo seguente:

' il seguente codice è scritto nella classe secondaria Cmia.class:

Public Sub cmiaSec(testo As String)

 Dim obj, objsub As Object

 For Each obj In FMain.Children
   Select Case obj.Name
     Case "Button1" 
       obj.Caption = "luna"
     Case "Label1"
       obj.Caption = "luna"
   End Select

   If Object.Type(obj) = "Panel" Then
     For Each objsub In obj.Children
       If Object.Type(objsub) = "Label" Then
         objsub.Caption = "sole"
       Endif
     Next
   Endif
 Next

End