Differenze tra le versioni di "Restituire ad un Form un valore passato ad Form secondario"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
Nel caso si debba restituire ad un ''Form'' principale un valore passato e gestito dalla ''Classe'' di un ''Form'' secondario, e più in generale, per restituire ad una ''Classe'' principale il valore passato da questa ad un ''Casse'' secondaria, bisognerà passare alla ''Classe'' secondaria (''Form'' secondario) un ''Oggetto'' del tipo del valore che si intende passare. Inoltre nella ''Classe/Form'' secondaria si dovrà utilizzare il Metodo nascosto "''_new( )''".
+
Nel caso si debba restituire ad un ''Form'' principale un valore passato e gestito dalla ''Classe'' di un ''Form'' secondario, e più in generale, per restituire ad una ''Classe'' principale il valore passato da questa ad un ''Casse'' secondaria, bisognerà passare alla ''Classe'' secondaria (''Form'' secondario) un ''Oggetto'' del tipo del valore che si intende passare. Inoltre nella ''Classe/Form'' secondaria si dovrà utilizzare il Metodo nascosto "_new()".
 
+
     
Infatti l'Oggetto viene passato ad un'altra procedura per "''indirizzo''" di memoria. Infatti, poiché gli ''Oggetti'' sono passati per "''Indirizzo''", ogni modifica al loro contenuto viene mantenuta all'uscita dalla funzione che li ha gestiti. |[[#Note|1]]|
+
Infatti l'Oggetto viene passato ad un'altra procedura per "''Indirizzo'' " di memoria. Infatti, poiché gli ''Oggetti'' sono passati per "''Indirizzo'' ", ogni modifica al loro contenuto viene mantenuta all'uscita dalla funzione che li ha gestiti. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
 
  
 
Vediamo dunque un esempio pratico.
 
Vediamo dunque un esempio pratico.
  
 
Nel Form principale abbiamo un Button ed il codice:
 
Nel Form principale abbiamo un Button ed il codice:
  '''Public''' Sub Button1_Click()   
+
  Public Sub Button1_Click()   
 
    
 
    
  Dim fs As Form_secondario
+
  Dim fs As Form_secondario
  Dim bb As New Byte[1]
+
  Dim bb As New Byte[1]
 
    
 
    
 
   bb[0] = 99
 
   bb[0] = 99
Riga 20: Riga 19:
 
   Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
 
   Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
 
    
 
    
  '''End'''
+
  End
  
  
 
Mentre nel ''Form'' secondario (che chiamiamo ad esempio: ''Form_secondario'') abbiamo un ''Button'' ed il seguente codice:
 
Mentre nel ''Form'' secondario (che chiamiamo ad esempio: ''Form_secondario'') abbiamo un ''Button'' ed il seguente codice:
  '''Public''' Sub _new(by As Byte[], nome As String)
+
  Public Sub _new(by As Byte[], nome As String)
 
        
 
        
 
   Me.Caption = nome
 
   Me.Caption = nome
Riga 32: Riga 31:
 
   by[0] += 1
 
   by[0] += 1
 
        
 
        
  '''End'''
+
  End
 
        
 
        
 
        
 
        
  '''Public''' Sub Button1_Click()   
+
  Public Sub Button1_Click()   
 
            
 
            
 
   Me.Close()   
 
   Me.Close()   
     
+
  '''End'''
+
  End
  
  
 
Ugualmente, se il ''Form/Classe'' principale passa ad un ''Form/Classe'' secondario una stringa, e da quest'ultimo deve ricevere una stringa, avremo nel ''Form'' principale:
 
Ugualmente, se il ''Form/Classe'' principale passa ad un ''Form/Classe'' secondario una stringa, e da quest'ultimo deve ricevere una stringa, avremo nel ''Form'' principale:
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
  Dim fs As Form_secondario
+
  Dim fs As Form_secondario
  Dim bb As New String[1]
+
  Dim bb As New String[1]
 
    
 
    
    bb[0] = "Testo iniziale"
+
  bb[0] = "Testo iniziale"
 
    
 
    
 
   fs = New Form_secondario(bb, "Form secondario")
 
   fs = New Form_secondario(bb, "Form secondario")
Riga 56: Riga 55:
 
   Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
 
   Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
 
    
 
    
  '''End'''
+
  End
  
 
Mentre nel ''Form'' secondario:
 
Mentre nel ''Form'' secondario:
  '''Public''' Sub _new(by As String[], nome As String)
+
  Public Sub _new(by As String[], nome As String)
 
    
 
    
 
   Me.Caption = nome
 
   Me.Caption = nome
Riga 67: Riga 66:
 
   by[0] = "Testo modificato"
 
   by[0] = "Testo modificato"
 
    
 
    
  '''End'''
+
  End
 
 
  
  

Versione attuale delle 15:56, 25 giu 2024

Nel caso si debba restituire ad un Form principale un valore passato e gestito dalla Classe di un Form secondario, e più in generale, per restituire ad una Classe principale il valore passato da questa ad un Casse secondaria, bisognerà passare alla Classe secondaria (Form secondario) un Oggetto del tipo del valore che si intende passare. Inoltre nella Classe/Form secondaria si dovrà utilizzare il Metodo nascosto "_new()".

Infatti l'Oggetto viene passato ad un'altra procedura per "Indirizzo " di memoria. Infatti, poiché gli Oggetti sono passati per "Indirizzo ", ogni modifica al loro contenuto viene mantenuta all'uscita dalla funzione che li ha gestiti. [nota 1]

Vediamo dunque un esempio pratico.

Nel Form principale abbiamo un Button ed il codice:

Public Sub Button1_Click()  
 
  Dim fs As Form_secondario
  Dim bb As New Byte[1]
  
  bb[0] = 99
  
  fs = New Form_secondario(bb, "Form secondario")
  
  fs.Show
  
  Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
  
End


Mentre nel Form secondario (che chiamiamo ad esempio: Form_secondario) abbiamo un Button ed il seguente codice:

Public Sub _new(by As Byte[], nome As String)
      
  Me.Caption = nome
   
  Print "Valore ricevuto dal 'Form_secondario' proveniente dal 'Form' principale:  "; by[0]
   
  by[0] += 1
      
End
     
     
Public Sub Button1_Click()  
          
  Me.Close()  

End


Ugualmente, se il Form/Classe principale passa ad un Form/Classe secondario una stringa, e da quest'ultimo deve ricevere una stringa, avremo nel Form principale:

Public Sub Form_Open()
 
  Dim fs As Form_secondario
  Dim bb As New String[1]
 
  bb[0] = "Testo iniziale"
 
  fs = New Form_secondario(bb, "Form secondario")
  
  fs.Show()
  
  Print "Valore ricevuto dal 'Form' principale proveniente dal 'Form_secondario': "; bb[0]
  
End

Mentre nel Form secondario:

Public Sub _new(by As String[], nome As String)
 
 Me.Caption = nome
 
 Print "Valore ricevuto dal 'Form_secondario' proveniente dal 'Form' principale: "; by[0]
 
 by[0] = "Testo modificato"
  
End


Note

[1] Vedere anche qui: http://www.gambas-it.org/smf/index.php?topic=1259.msg14106#msg14106