Newsgroup: it.comp.lang.visual-basic
Titolo: Passaggio parametri tra 2 Form

Dovrei passare dei parametri da un Form ad un altro.
Nei 2 moduli .BAS carico in memoria i 2 Form e dichiaro una varibile Public.
Non riesco a capire perch� la routine Form_Load() di Riceve.frm non riceve
il valore di pParametro assegnato nel Form Trasmette.frm, mentre la
routine pRiceve_Param_Click() (Pulsante) riceve.
Esiste un modo affinch� il parametro venga ricevuto e utilizzato in 
Form_Load?
Qui sotto il codice di prova.
Grazie Saluti.
.********************************************
'Predisposizione.BAS                    ' Modulo *.BAS
'...................                                 '
Sub Main() '                                  '
 Load Trasmette 'Carica il Form.    'Carica il Form
 Load Riceve 'Carica il Form.        'Carica il Form
 Trasmette.Visible = True              'Si posiziona su Trasmette
End Sub                                        '
'********************************************
'Variabili.BAS                               ' Modulo *.BAS
'.............                                       '
Public pParametro                         'Parametro da passare
'********************************************
'Trasmette.frm                               ' Form   *.FRM
'...........................                         '
Private Sub pRicezione_Click()     '
 pParametro = tTrasmissione         'Casella di testo
 Me.Hide                                      '
 Riceve.Show                                'Vis. il Form che riceve
 Riceve.Enabled = True                 '
End Sub                                       '
'********************************************
'Riceve.frm                                  ' Form   *.FRM
'..........................                        '
Private Sub Form_Load()            '
 tRicezione = pParametro             'Qui non riceve
End Sub                                      '
'.........Pulsante.................            '
Private Sub pRiceve_Param_Click()  'Qui riceve OK.
 tRicezione = pParametro                   '
End Sub                                            '
'******************************************** 

 routine pRiceve_Param_Click() (Pulsante) riceve.
Perchè hai invocato il Load delle due form come prima istruzione di
Sub Main, questo a sua volta scatena gli eventi Form_Load di entrambe
*subito*, prima che pParametro venga valorizzato.
A quel punto, visto che nel tuo codice le finestre non vengono più
scaricate ma solo nascoste, ovviamente l'evento Form_Load non si
innesca più.
Ad ogni modo, evita per quanto possibile l'uso di variabili globali in
questo modo (già che ci sei evita anche i tipi Variant e dichiara
esplicitamente 'As <qualcosa>'); per passare un valore ad un'altra
finestra puoi, in maniera molto più pulita e altrettanto semplice,
aggiungere alla finestra stessa un membro pubblico.
Es:
'In (dichiarazioni) di Riceve.frm
Public Parametro As String
'(meglio ancora sarebbe una Property Get/Set pubblica, per brevità
usiamo Public secco)
Private Sub Form_Load()
 tRicezione = Parametro
End Sub
'In Trasmette.frm
Private Sub pRicezione_Click()
 Riceve.Parametro = tTrasmissione
 Me.Hide
 Load Riceve
 'a questo punto Parametro è valorizzato, e viene recepito da
Form_load
 Riceve.Show
End Sub

Grazie Luca con quella porzione di codice funziona.
Adesso la implementero nell' applicazione reale.
Grazie
Saluti.