Newsgroup: it.comp.lang.visual-basic
Titolo: Passare variabili da un form a un'altro.

Scusate ancora,
Vb.net
2 form, 1 principale e 1 secondario
nel form principale utilizzo delle variabili che vorrei passare al form 
secondario all'apertura dello stesso, come fare?
nello specifico:
il form2 contiene solo un datagrid, vorrei poter passare dal primo form 
delle stringhe che mi servono per sfruttare lo stesso datagrid per risultati 
diversi
Spero di essere stato chiaro.
Grazie

 diversi
Non so se ti può essere utile, ma in vb6 ci sono le Property Get e Property
Let da dichiarare in un form.
Verifica se la guida ti indica una funzione simile.

 Verifica se la guida ti indica una funzione simile.
Io uso spesso anche la proprietà tag del form
greg

 ha scritto nel messaggio 
news:e1ln0q$b18$1...@emma.aioe.org...


 potresti spiegarmi come?
Mentre sono nel formA scrivo:
Me.Tag= "Te ne vai o no?"
Poi da qualcunque altro form la vado a leggere così:
pippo= formA.Tag
La cosa vale per qualunque oggetto che esponga .Tag
Potrei anche scrivere, mentre sono in formB
pippo= fromA.List1.Tag
--
Greg

 pippo= fromA.List1.Tag
Orribile, orripilante ed orripiloso.
1) Ci sono le proprieta' esattamente per questo.
2) Oltre alle proprieta' ci sono anche i metodi.
In entrambi i casi:
- Se qualcuno un giorno mette le mani sul tuo codice non deve diventare 
scemo per capire cosa fa' quella parte di codice, visto che Proprieta' e 
Metodi hanno un nome che -di solito- e' esplicativo
- Eviti di passare per un Variant
- Hai modo di agganciare del codice al cambio di valore. Perche' non usare 
metodi e proprieta' per poi trovarsi a fare:
form1.tag = qualcosa
form1.LeggiIlTagEdEseguiLaRelativaFunzione
e' da cinghiali.

 e' da cinghiali.
Sě, č abbastanza vero. Ma un minimo di diplomazia non guasterebbe.
-- 
Salutoni
Sergio
La vita č un lungo apprendistato per imparare ad essere giovani
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 says...

In questo caso io utilizzo delle variabili inserite nel Modulo, in 
questo modo sono utilizzabili su tutte le form del programma.
Christian

 questo modo sono utilizzabili su tutte le form del programma.
Per vb6 anche io facevo così, incominciando ad usare le property get e let
(dopo 3 minuti per capire come funzionavano) mi sono sentito riavere.
Pensa se hai una form con una griglia per caricare un recordset/Collection.
Ti tocca dichiarare variabili globali inutili, con il problema che a volte
te le modifichi magari in qualche posto che non ti aspetti e si incasina.
Invece nel form dichiari una proprietà di lettura (GET) o scrittura (LET) e
in quel modo agisci solo in lettura/scrittura.
Esempio per vedere se da una form ho confermato o sono uscito con un
annulla:
Public BoolResult As Boolean
Public Property Get GetBoolResult() As Boolean
  GetBoolResult = BoolResult
End Property
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
  Case vbKeyF1'annulla
    BoolResult = False
    Me.Hide 'uso la hide invece di unload me per leggere l'output
  Case vbKeyF2'conferma
    BoolResult = True
    Me.Hide
End Select
End Sub
E dalla form/modulo in cui leggi:
    Load frmDescMovim
    frmDescMovim.Show vbModal
    If frmDescMovim.GetBoolResult Then
      'tue operazioni per la conferma
    End If
    Unload frmDescMovim 'scarico io il form
    Set frmDescMovim = Nothing
-- 
DBMS Firebird
VB6 + Ado

     Set frmDescMovim = Nothing
In generale un approccio migliore potrebbe essere: Form=Classe, definendo
proprietà di input e di output ed utilizzando unicamente queste come
interfaccia.
In questi casi non si deve più usare l'istanza predefinita del form, ma occorre
crearla ogni volta che serve, esattamente come l'istanza di un oggetto.
Si ha anche il vantaggio che è possibile scaricare il form "da dentro" il form
stesso, senza ricorrere ad Hide.
Dim frm As frmTemplate
    Set frm = New frmTemplate
    With frm
        ' Impostare le proprietà di "input"
        .Show vbModal
        If .Result Then
            ' Recuperare le proprietà di "output"
        End If
    End With
    Set frm = Nothing
HTH
Raf

 Sì, è abbastanza vero. Ma un minimo di diplomazia non guasterebbe.
Forse avrà dato fastidio il valore della tag? :)
greg 

 Sě, č abbastanza vero. Ma un minimo di diplomazia non guasterebbe.
Perche'?
Mica gli ho detto che e' un cretino o me la sono presa con lui, dico solo 
che e' un metodo da cinghiali. Nelle aziende ti becchi dei cazziatoni 
paurosi a programmare cosi', altro che diplomazia...

 paurosi a programmare cosi', altro che diplomazia...
Allora perchè quando faccio notare queste cose ai miei colleghi mi 
rimproverano di remare contro? :)
Ciao 

 pippo= fromA.List1.Tag
per curiosita', se formA non e' stato caricato, cosa succede?

 rimproverano di remare contro? :)
perche' la vostra azienda e' spaccata in due, e loro vogliono programmare :)

 ha scritto nel messaggio 
news:4abhsrF...@individual.net...

Più che altro, se domani non ti ricordi più che usi il Tag per quel lavoro 
là e decidi ancora per pigrizia di usarlo per qualcos'altro?
E se lo fai tu, nulla vieta che qualcun'altro decida di fare lo stesso, 
magari pensando "tanto chi vuoi che la usi Tag?".
Non mi pare una soluzione ottimale, d'altra parte se lui vuole 
programmare... :)
Ciao 

 là e decidi ancora per pigrizia di usarlo per qualcos'altro?
.tag = "voltagabbana" :)

 Mica gli ho detto che e' un cretino
No. Gli hai solo detto che utilizza metodi da cinghiale, il che può
equivalere ad insinuare più o meno velatamente che faccia parte della
specie. E' come se dicessi che porre le proprie critiche in modo
indelicato è da stronzi.
Poi uno può anche decidere che non gli frega niente di essere uno stronzo
o un cinghiale, naturalmente.
-- 
Salutoni
Sergio
La vita è un lungo apprendistato per imparare ad essere giovani


 o un cinghiale, naturalmente.
si`, ma questo e` un altro discorso: applicare un comportamento non e`
*essere* il comportamento.
-- 
ciao, hal