Differenze tra le versioni di "Passare una Struttura con Event"
(Creata pagina con 'Qualora, al sollevarsi di un evento tramite l'istruzione ''Event'', si debba passare come parametro una ''Struttura'', sarà necessario dichiarare nel codice la medesima ''Str...') |
|||
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 ''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 medesima identica ''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. | ||
− | Mostriamo un semplice esempio: | + | 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: | ||
+ | Public Struct <FONT color=Red>STRUTTURA</font> | ||
+ | a As Byte | ||
+ | i As Integer | ||
+ | s As String | ||
+ | End Struct | ||
+ | |||
+ | Event <FONT color=Blue>evento</font>(strutt As <FONT color=Red>STRUTTURA</font>) | ||
+ | |||
+ | |||
+ | '''Public''' Procedure prova(b As Byte) | ||
+ | |||
+ | Dim j As Byte | ||
+ | Dim st As New <FONT color=Red>STRUTTURA</font> | ||
+ | |||
+ | |||
+ | For j = 0 To 100 | ||
+ | |||
+ | If j = 50 Then | ||
+ | st.a = j | ||
+ | st.i = j * b | ||
+ | st.s = "j = 50 !" | ||
+ | Raise <FONT color=Blue>evento</font>(st) | ||
+ | Endif | ||
+ | |||
+ | Next | ||
+ | |||
+ | '''End''' | ||
− | <FONT color= | + | Il codice della Classe principale è il seguente: |
+ | Public Struct <FONT color=Red>STRUTTURA</font> | ||
+ | a As Byte | ||
+ | i As Integer | ||
+ | s As String | ||
+ | End Struct | ||
+ | |||
+ | |||
+ | Public cl As New Class1 As "<FONT color=DarkGreen>cl</font>" | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | cl.prova(2) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub <FONT color=DarkGreen>cl</font>_<FONT color=Blue>evento</font>(sFM As <FONT color=Red>STRUTTURA</font>) | ||
+ | |||
+ | With sFM | ||
+ | Print .a | ||
+ | Print .i | ||
+ | Print .s | ||
+ | End With | ||
+ | |||
+ | <FONT color=Gray>' ''Poniamo una pausa di 2 secondi per vedere in console il risultato della sollevazione dell'evento:''</font> | ||
+ | Wait 2 | ||
+ | |||
+ | '''End''' |
Versione delle 08:31, 5 ago 2014
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 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) Public Procedure prova(b As Byte) Dim j As Byte Dim st As New STRUTTURA For j = 0 To 100 If j = 50 Then st.a = j st.i = j * b st.s = "j = 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