Newsgroup: it.comp.lang.visual-basic
Titolo: Portare le variabili da un Form all'altro

Seguendo le vostre indicazioni e leggendo sul Balena e sul McGraw Hill ho 
visto che le variabili durano quanto il form nelle quali vengono dichiarate, 
tranne quelle dichiarate in global che possono essere chiamate da ogni punto 
del programma.
Se perň io ho una variabile che dichiaro nel Form3 e gli assegno qui un 
valore (es: 50) come faccio a portarmi tale variabile anche nel Form 4 per 
riutilizzarla senza perdere il valore orignario?
Ovviamente la variabile in questione varia ad ogni passaggio.
Ho provato ad integrare nel file BAS la seguente riga:
Public eta as Long
ma quando assegno un valore alla variabile eta (es. nel Form3) ed apro un 
altro Form non trovo piů il valore che avevo assegnato a tale variabile.
Grazie per ogni ulteriore info.
(G)

 altro Form non trovo piů il valore che avevo assegnato a tale variabile.
Questo credo dipenda dal fatto che tu dichiari la var sia nel form che nel
modulo.
In questi casi VB da la precedenza alle var con scope piů ristretto rispetto
la punto in cui ci si trova.
Es.:
' Modulo bas
Public x As Long
' Form
Public x As String
' Sub
Sub Pippo()
    Dim x As Date
    x = Now
    ' questo assegna la data e ora corrente a x nella sub,
    ' ma le altre x in giro per il mondo restano invariate.
    ' Nota che non č nemmeno detto che tutte le x siano dello
    ' stesso tipo.
End Sub
' Sub 2
Sub Pluto()
    x = "Ciao"
    ' assegna "Ciao" a x, ma speriamo che Pluto() sia nel form
    ' altrimenti tenterebbe di assegnare "Ciao" a un numero!
End Sub
Detto questo, l'uso di variabili globali per portarsi in giro un valore č
generalmente deprecabile,
a meno che questo valore non ti serva veramente in *tutto* il progetto, e
comunque il problema
si puň sempre aggirare.
Il modo corretto č dichiarare la variabile *privata* (ovviamente con delle
eccezioni, ma restiamo sul classico) nel modulo (inteso come "file") dove
questa "nasce" e poi passata a tutti gli altri che la richiedono.
*MAI* richiamare il chiamante dal chiamato!
Il form/classe chiamato non deve avere nessun riferimento a un potenziale
chiamante, perchč potrebbe non essere lui.
Es.
' Modulo bas
Public Type TConfig
    Valore1 As Long
    Valore2 As Long
End Type
Private Config As TConfig
Sub Main()
    Dim frmMain As Form1
    Set frmMain = new Form1
    frmMain.SetConfig(Config)
    frmMain.Show
End Sub
' In Form1
Private Config As TConfig
Public Sub SetConfig(c As TConfig)
    Config = c
    ' ...
End Sub
Private Sub LanciaUnAltroForm()
    Dim frmSecondario As Form2
    Set frmSecondario = new Form2
    frmSecondario.SetConfig(Config)
    frmSecondario.Show
End Sub
Chiaro?
Ciao
--
- Reporting tool
http://www.neodatatype.net

 CUT
In teoria ho capito il concetto, in pratica no!
Ti ringrazio veramente molto per il fattivo aiuto che mi stai fornendo ad 
affrontare le prime difficultà del VB6.
Buona domenica.
(G)

 perdo!
Questo significa che non stai usano l'Option Explicit.
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 Questo significa che non stai usano l'Option Explicit.
Che figuraaaaaaaaaaaaa!!!!!
la variabile la porto regolarmente dichiarandola in Modulo1.bas come 
Public...
solo che nel Form "incriminato" la avevo scritta male!
E certo che il VB6 non la trovava!
Circa l'Opt. Explicit ho spuntato la casella apposita così me lo trovo 
sempre già inserito all'inzio di ogni form, come suggeritomi da "qualcuno" 
qui... ;-)))
Grazie.
P.S
la mentalità del GW-Basichista: avevo aggirato il problema salvando in un 
file temporaneo la variabile che mi serviva (eta) e poi riaprendo tale file 
nel Form necessario opnde poter leggere il valore memorizzato ed assegnarlo 
nuovamente alla variabile dopo averla DIMensionata in locale...
Però ha funzionato! ;-))))

 Public eta as Long
In un caso come questo io farei cosi:
mentre sei in form3 fai i tuoi calcoli e assegni un valore ad eta, poi
form4.tag=eta
from4.show
Il vantaggio è di non avere in giro una variabile globale
--
Greg

 Il vantaggio è di non avere in giro una variabile globale
Ottimo, grazie!
Quindi seguendo il tuo consiglio mi ritrovo la variabile "eta" anche nel 
form4?
Ciao!
(G)


Esatto, ma non è una variabile, è una proprietà di ogni form, che tu puoi
leggere e scrivere.
Però attento quando vai a leggerla, perchè credo che il tipo di dato sarà un
variant, e in qualche caso si potrebbero avere sorprese, senza le opportune
conversioni.
PS Ho controllato e la .Tag è di tipo string
--
Greg