Restituire ad un Form un valore passato ad Form secondario

Da Gambas-it.org - Wikipedia.
Versione del 8 giu 2017 alle 10:35 di Vuott (Discussione | contributi) (Creata pagina con "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 ''Clas...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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. |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:

Private ps As String[]  
     
     
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



Note

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