Newsgroup: it.comp.lang.visual-basic
Titolo: Variabile per cominicare tra form

Salve,
mi chiedevo una cosa. Supponiamo di voler aprire un canale di
comunicazione attraverso due form tramite una variabile accessibile da
entrambi i form. Fino ad ora ho risolto il problema definendo una
variabile globale ma mi chiedevo se esitono metodi piu' eleganti.
Qualcuno potrebbe suggerire di mettere una label su uno dei due form
ed accedere a questa label... ma se volessi definire una variabile
membro "pippo" da associare al form ed accessibile con "formMio.pippo"
senza che sia collegata ad alcun oggetto potrei farlo? Eventualmente
come?
Grazie.
Giuseppe

 variabile globale ma mi chiedevo se esitono metodi piu' eleganti.
Una var globale (definita in un modulo BAS) sarà visibile ovunque.
Una var public definita nella zona dichiarazioni del form sarà visibile
ovunque con nome_form.nome_variabile
Qual è la sostanziale differenza? Non lo so.

ma mi chiedevo se esitono metodi piu' eleganti.
Soprattutto piu' sicuri: definisci una proprieta' o metodo
personalizzato del form con cui vuoi comunicare.
In realta' si potrebbero anche incapsulare i form in una classe che li
gestisca, ma poi il controllo sull'uso sarebbe demandato piu' alla
buona volonta' dello sviluppatore che alle funzionalita' OOP
(ridicole) del compilatore visual basic ante .net.
-- 
ciao, hal

On 21 Jan 2004 23:35:33 -0800, 
sco...@tiscalinet.it
 (Giuseppe) wrote:

Puoi crearti una proprietą ...
Vedi get, let ... e soprattutto Google ...
Ciao!

 Qual è la sostanziale differenza? Non lo so.
Che la variabile del form necessita dell'instanziazione del form stesso, 
e logcamente parlando, si riferisce solo al form in questione.
L'uso di un oggetto come "appoggio" è quantomeno scandalosa.
Gli oggetti sono creati per svolgere una specifica funzione (la label 
per es. deve rappresentare a video una scritta) e non altro.
Ciao

 come?
Io so che ci sono vari metodi per farlo (tra l'altro tutti illustrati nelle
altre risposte)... Perň io approfitto del thread per fare una domanda piů...
"Tecnica"... Nella situazione descritta dal primo post, qual'č la soluzione
piů corretta dal punto di vista logico, funzionale e "estetico" ?
Grazie 1000
Antonio Mirarchi
P.S
Ehm... Non vorrei dirlo... Ma io ho quasi sempre usato la variabile globale
^__^

 piů corretta dal punto di vista logico, funzionale e "estetico" ?
Qual č il tipo di informazione che deve contenere questa variabile?
Ciao

 ha scritto nel messaggio
news:920bbe6b.04012...@posting.google.com...

Usa Property Let e Property Get dentro la form.
Flippo

> Qual è il tipo di informazione che deve contenere questa variabile?
Fino ad ora mi è capitato di dover passare o String o Integer o magari
Double...
Antonio Mirarchi

Io metto  codice tipo questo in una form:
Private strStringa As String
Public Property Let Entra(ByVal str As String)
    strStringa = str
End Property
Public Property Get Esce()
    Esce = strStringa
End Property
Se il dato deve solo essere letto dall'esterno, elimino  Property  Let.
Se la form che contiene il codice č .Hide o Unloaded, puoi continuare a
leggere e scrivere
il dato.
-- 
----------------------------
Mauro Gamberini

 Double...
No, intendo: cosa devi memorizzare?
Informazioni di configurazione?
Valori comuni?
Cosa?
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

> Valori comuni?
Valori comuni
Antonio Mirarchi

 Qual è la sostanziale differenza? Non lo so.
Appunto... ma la differenza qual'e'??? Ci illuminate...?
Giuseppe

> Una var globale (definita in un modulo BAS) sarà visibile ovunque.

A me lo chiedi?! Io, al massimo, ti posso togliere un apostrofo...

 Cosa?
Ma, scusa, Zanna, chettefrega? ;-)
Intendo dire, che importa che ci metto?

 il dato.
Ora me la tirate fuori (nulla di personale all'autore del post cui
rispondo):
Io, unico che pistola con i nostri applicativi, dovrei scrivere 6/sei righe
invece di 1/una?
Vabbè la teoria e la raffinatezza, ma qui si tratta di farsi del male
credendo che sia bene.
Evviva le globali, evviva i Variant, evviva i GoTo, evviva DAO, evvita
persino l'End.
Macchecazzo!
Andate come andavano i commercialisti tempo fa (a righe di giornale)?
MaMifacciIlPiacere!

 rispondo):
meno male.....
-- 
----------------------------
Mauro Gamberini


Forse che un form può essere istanziato più volte, un modulo  non di
classe no?
Ciao!

persino l'End.
Nessuno vieta di usare quanto sopracitato, solo che il tutto rende
"qualitativamente" il codice "peggiore", cioè meno manutenibile da una
persona che non sia quella che l'ha scritto (a volte neanche a
quella)..... :D
Molte cose si possono fare in modi differenti per arrivare allo stesso
risultato, una via veloce, una via elegante, una via.... di mezzo....
ciao,
Aran Banjo
-
C'è da chiedere cosa togliere nell'indirizzo ;)
Replay to: *[[banjo]]spamdim..@**
abilene.it
**

 risultato, una via veloce, una via elegante, una via.... di mezzo....
Definire elegante. Non sempre quel che scriviamo è elegante per tutti, a
volte nemmeno per noi, però così facciamo perchè così ci va. Un GoTo non fa
pensare, sarà inelegante per questo? Bisogna pensare (o bruciare la
rotellina del mouse) a tutti i costi?
D&G sono secondo te eleganti? Ok, ok, puoi anche rispondere sì, io rispondo
che prima di tutto sono altro, anzi, tutt'altro. Posso?

che prima di tutto sono altro, anzi, tutt'altro. Posso?
Docce&Gabinetti personalmente non mi fanno ne caldo ne freddo. Ho 25
anni e preferisco vestire Armani o Versace.... e no, non mi piace
neanche Diesel, nonostante crei roba "di tendenza" (sono stato a un
festino organizzato dai ragazzi della Diesel.... che dire.... tutti
come D&G :D )


 credendo che sia bene.
[SNIP]
Non e' solo "teoria e raffinatezza", ma anche un ottimo sistema pratico per
manutenere e riutilizzare al meglio il tuo codice, anche se ci lavori solo
tu, e quindi in sostanza lavorare meglio prima per lavorare meno dopo.
Immagina di dover riutilizzare la tua form, con un paio di proprieta'
aggiuntive, in un'altro progetto:
con il sistema "lungo" includi semplicemente la form e hai finito, perche'
e' gia' autosufficente ed espone direttamente le sue property; con il
sistema "corto" devi andare a recuperare la dichiarazione delle globali, che
potrebbero essere in uno o piu' BAS, e includerli tutti nel nuovo progetto;
se sei *molto fortunato* hai finito, altrimenti ti aspetta un assortimento
di problemi che puo' variare dal semplice spreco di risorse (moduli con 30
funzioni e 30 globali di cui usi 2 variabili in croce) al conflitto tra le
funzioni del modulo riciclato con altre gia' incluse nel progetto, con
fiorire di "cut&paste" selvaggio di codice che si va a duplicare in giro...
Incidentalmente, se uno non vuole andare per il sottile, puo' persino
evitare di utilizzare le routine Property e semplicemente spostare un
singolo "Public Pippo As String" da un BAS (var. globale) a un FRM (membro
pubblico): si ottiene l' 80% dei vantaggi visti sopra a costo zero
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 zero
Ecco, e io (che vado per il sottile quando davvero serve, ovvero risparmio
di memoria, includere solo quel che serve, etc.) cos'ho detto?

 di memoria, includere solo quel che serve, etc.) cos'ho detto?
Hmmm... ora mi sorge il dubbio di averti frainteso: quando nell'altro
messaggio parlavi di 1 riga contro 6, pensavo parlassi sempre di variabili
globali a livello di progetto contro property a livello di form; se invece
parlavi di public a livello di form contro private+property sempre a livello
di form allora sono d'accordo con te: la seconda versione continua ad avere
qualche possibilita' favorevole in piu', ma il grosso dei vantaggi lo
ottieni anche con la public diretta.


 public diretta.
Sě, anche qui. Facevo un burinissimo conto delle righe di codice: 3+3 per
let e get di property e 1 (beh, un'altra per la dichiarazione) per
l'assegnazione o il recupero di una Public (di Form o di progetto/modulo)


Scusa Lupo, supponi che la tua variabile pubblica non debba mai essere
uguale a 0 e nel qualcaso la imposti ad 1.
Tutte le volte, se usi una variabile globale, nel tuo codice dovrai
controllarla e scriverti un bel po' di If ...then.
Col property get/let convalidi i dati dentro la tua routine una volta e per
tutte !
O sbaglio?
Flippo

 O sbaglio?
Non uso mai una variabile pubblica per qualcosa che può/deve impostare
l'operatore.
Una variabile pubblica è sempre gestita dal programmatore, anche se dovesse
"fotografare" una situazione ambientale dipendente dalle azioni
dell'operatore. Lo farebbe comunque staticamente.
In questo senso non devo mai fare i controlli che tu ipotizzi. Per estendere
"elasticamente" il discorso (anche perchè non sono sicuro di avere ben
compreso), dirò che esistono sempre le funzioni che possono, mantenendo
invariata la loro chiamata e con passaggio di parametri o meno, concentrare
i controlli e le imposizioni sul loro risultato ed ... effetti collaterali
(come assegnazione di parametri e/o di altre variabili).

riferimento a quella finestra.
Perfettamente d'accordo. Più facile da mantenere.
Sempre e solo opinioni mie...
-- 
----------------------------
Mauro Gamberini

 Perfettamente d'accordo. Più facile da mantenere.
Non sono d'accordo, vedi il mio post in replica a quello

 (come assegnazione di parametri e/o di altre variabili).
Il fatto è che le funzioni se non le chiami, non controllano un belino(come
dicono a genova :-))
Quindi teoricamente OGNI volta che usi la tua variabile pubblica dovresti
anche contemporaneamente chiamare la tua funzione di controllo(altro che 6
righe di codice in piu'!!)
Se tu inserisci il controllo nella property let/get, setti la proprietà e
chi si e' visto si è visto.(piu' sicurezza, piu' leggibilità, meno righe di
codice alla fine).
Lupo, ti leggo da un sacco e sono sempre stato d'accordo con te, stavolta
consentimi di dissentire...del resto da un punto di vista funzionale non
cambia nulla, è solo questione di.....stile.
baciamo le mani
Flippo

 baciamo le mani
Ti ringrazio, ma non baciarmi le mani. Leggimi meglio.
Sullo stile non discuto, sul fatto (se si leggesse meglio) che lo stile è
"liberamente proprio" se si è i soli a programmare, discuto, eccome.
Della serie "nessuno me lo mena meglio di me".
C'è qualche pazzo che può affermare il contrario (anche per il suo)? Sarebbe
un pazzo :-P