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

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 7: Riga 7:
 
<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 nella classe secondaria "Cmia.class" si potrà sperimentare anche il codice del tipo seguente:</p>
 
 
 
 
  ''<Font Color= #006400>' il seguente codice è scritto nella classe secondaria Cmia.class:''</font>
 
  ''<Font Color= #006400>' il seguente codice è scritto nella classe secondaria Cmia.class:''</font>
 
   
 
   
  '''Public''' Sub cmiaSec(testo As String)
+
  Public Sub cmiaSec(testo As String)
 
+
 
   Dim obj, objsub As Object
 
   Dim obj, objsub As Object
 
   
 
   
 
   For Each obj In FMain.Children
 
   For Each obj In FMain.Children
 
 
     Select Case obj.Name
 
     Select Case obj.Name
 
       Case "Button1"  
 
       Case "Button1"  
Riga 38: Riga 35:
 
       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