Differenze tra le versioni di "Passare una Struttura con Event"

Da Gambas-it.org - Wikipedia.
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Qualora, al sollevarsi di un evento tramite l'istruzione ''Event'', si debba passare come parametro una ''Struttura'', sarà necessario dichiarare nel codice la medesima identica ''Struttura'' sia nella Classe secondaria, ove viene sollevato l'evento, sia nella Classe principale ove l'evento verrà intercettato.
+
Qualora, al sollevarsi di un evento tramite l'istruzione ''Event'', si debba passare come parametro una ''Struttura'', sarà necessario dichiarare nel codice la <SPAN Style="text-decoration:underline">medesima identica</span> ''Struttura'' sia nella Classe secondaria, ove viene sollevato l'evento, sia nella Classe principale ove l'evento verrà intercettato.
 
<BR>Più precisamente, le due ''Strutture'' dichiarate dovranno avere medesimo nome identificatore e medesimi membri, sia nel loro identificatore sia nel tipo.
 
<BR>Più precisamente, le due ''Strutture'' dichiarate dovranno avere medesimo nome identificatore e medesimi membri, sia nel loro identificatore sia nel tipo.
 
<BR>Gli identificatori delle variabili del tipo della ''Struttura'', presenti nella Classe secondaria ed in quella principale, potranno avere anche nomi diversi.
 
<BR>Gli identificatori delle variabili del tipo della ''Struttura'', presenti nella Classe secondaria ed in quella principale, potranno avere anche nomi diversi.
Riga 6: Riga 6:
 
Mostriamo un semplice esempio, nel quale si hanno due Classi: una principale ed una secondaria. L'evento viene sollevato nella Classe secondaria con l'istruzione ''Event'' e contemporaneamente viene passata, come suo parametro, una ''Struttura'', i valori della quale verranno quindi letti nella Classe principale.
 
Mostriamo un semplice esempio, nel quale si hanno due Classi: una principale ed una secondaria. L'evento viene sollevato nella Classe secondaria con l'istruzione ''Event'' e contemporaneamente viene passata, come suo parametro, una ''Struttura'', i valori della quale verranno quindi letti nella Classe principale.
  
La Classe secondaria, che chiameremo ''Class1.class'', avrà il seguente codice:
+
La <U>Classe secondaria</u>, che chiameremo ad esempio ''Class1.class'', avrà il seguente codice:
 
  Public Struct <FONT color=Red>STRUTTURA</font>
 
  Public Struct <FONT color=Red>STRUTTURA</font>
 
   a As Byte
 
   a As Byte
Riga 13: Riga 13:
 
  End Struct
 
  End Struct
 
   
 
   
  Event <FONT color=Blue>evento</font>(strutt As <FONT color=Red>STRUTTURA</font>)
+
  '''Event''' <FONT color=Blue>Evento</font>(strutt As <FONT color=Red>STRUTTURA</font>)
 
   
 
   
 
   
 
   
  '''Public''' Procedure prova(b As Byte)
+
  <FONT color=Gray>' ''Dichiariamo come Pubblica e creaiamo la Classe secondaria Class1.class.''
 +
' ''Quindi la assegnamo al Gruppo "cl":''</font>
 +
Public cl As New Class1 As "cl"
 +
 +
 +
Public Procedure prova(b As Byte)
 
    
 
    
   Dim j As Byte
+
   Dim b As Byte
 
   Dim st As New <FONT color=Red>STRUTTURA</font>
 
   Dim st As New <FONT color=Red>STRUTTURA</font>
 
   
 
   
 
+
  For b = 0 To 100
  For j = 0 To 100
+
     If b = 50 Then
      
+
      st.a = b
    If j = 50 Then
+
      st.i = b * b
      st.a = j
+
      st.s = "b = 50 !"
      st.i = j * b
+
      Raise <FONT color=Blue>Evento</font>(st)
      st.s = "j = 50 !"
+
    Endif
      Raise <FONT color=Blue>evento</font>(st)
+
  Next
    Endif
 
 
  Next
 
 
    
 
    
  '''End'''
+
  End
  
  
Il codice della Classe principale è il seguente:
+
Il codice della <U>Classe principale</u> è il seguente:
 
  Public Struct <FONT color=Red>STRUTTURA</font>
 
  Public Struct <FONT color=Red>STRUTTURA</font>
 
   a As Byte
 
   a As Byte
Riga 47: Riga 49:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   cl.prova(2)
 
   cl.prova(2)
 
   
 
   
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub <FONT color=DarkGreen>cl</font>_<FONT color=Blue>evento</font>(sFM As <FONT color=Red>STRUTTURA</font>)
+
  Public Sub <FONT color=DarkGreen>cl</font>_<FONT color=Blue>Evento</font>(sFM As <FONT color=Red>STRUTTURA</font>)
 
    
 
    
 
   With sFM
 
   With sFM
Riga 65: Riga 67:
 
   Wait 2
 
   Wait 2
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 12:45, 1 nov 2024

Qualora, al sollevarsi di un evento tramite l'istruzione Event, si debba passare come parametro una Struttura, sarà necessario dichiarare nel codice la medesima identica Struttura sia nella Classe secondaria, ove viene sollevato l'evento, sia nella Classe principale ove l'evento verrà intercettato.
Più precisamente, le due Strutture dichiarate dovranno avere medesimo nome identificatore e medesimi membri, sia nel loro identificatore sia nel tipo.
Gli identificatori delle variabili del tipo della Struttura, presenti nella Classe secondaria ed in quella principale, potranno avere anche nomi diversi.


Mostriamo un semplice esempio, nel quale si hanno due Classi: una principale ed una secondaria. L'evento viene sollevato nella Classe secondaria con l'istruzione Event e contemporaneamente viene passata, come suo parametro, una Struttura, i valori della quale verranno quindi letti nella Classe principale.

La Classe secondaria, che chiameremo ad esempio Class1.class, avrà il seguente codice:

Public Struct STRUTTURA
  a As Byte
  i As Integer
  s As String
End Struct

Event Evento(strutt As STRUTTURA)


' Dichiariamo come Pubblica e creaiamo la Classe secondaria Class1.class.
' Quindi la assegnamo al Gruppo "cl":
Public cl As New Class1 As "cl"


Public Procedure prova(b As Byte)
  
 Dim b As Byte
 Dim st As New STRUTTURA

 For b = 0 To 100
   If b = 50 Then
     st.a = b
     st.i = b * b
     st.s = "b = 50 !"
     Raise Evento(st)
   Endif
 Next
 
End


Il codice della Classe principale è il seguente:

Public Struct STRUTTURA
  a As Byte
  i As Integer
  s As String
End Struct


Public cl As New Class1 As "cl"


Public Sub Form_Open()

 cl.prova(2)

End


Public Sub cl_Evento(sFM As STRUTTURA)
 
 With sFM
   Print .a
   Print .i
   Print .s
 End With
 
' Poniamo una pausa di 2 secondi per vedere in console il risultato della sollevazione dell'evento:
 Wait 2

End