Newsgroup: it.comp.lang.visual-basic
Titolo: [VB & CLASSI] Evitare dichiarazione variabili Public

Ciao a Tutto il Ng...
Spero di riuscire a spiegarvi il mio problema...
Diciamo che piuttosto di un problema si tratta di evitare (come da subject)
di dichiarare delle Variabili public.
Ho la classe clsAnteprima (public) che al suo interno espone
-   delle proprietà ( una di esse NomeStampa).
-   un metodo Anteprima che richiama lo show della FORM frmANTEPRIMA.
Adesso la frmANTEPRIMA deve andare a leggere le proprietà che da altri
progetti vengono impostati.
Come faccio a fare questo?
In un primo momento ho messo in un modulo tante variabili public quante sono
le proprietà. Esse vengono impostate tramite la property Let. Così facendo
nella frmANTEPRIMA "leggo" le variabili publiche. Poi ho pensato un modo di
evitare le variabili public (che non sono il top:))) , dichiaro tante
funzioni Friend nella classe quante sono le sue proprietà.
frmANTEPRIMA per leggerle richiamerà le funzioni Friend...
In questo istante mi è venuta in mente la collection, potrei appendere ed
andare a recuperare i valori...
Cosa mi consigliate di fare?
P.s. la classe nei progetti che la utilizzano ha una sola istanza, non verrà
mai istanziata due volte..
Ciao a tutti e grazie per l'attenzione..
oZ

 funzioni Friend nella classe quante sono le sue proprietà.
[SNIP]
Non sono sicuro di capire bene: la classe espone gia' una serie di
proprieta' che vengono impostate dai vari progetti? (a proposito ma la
classe e la form sono in una DLL a parte o incorporati in ciascuno di
questi?)
Qual'e' il problema nel leggere queste proprieta' anche dalla  finestra?
forse quello che ti manca e' solo di impostare, nel metodo Anteprima, una
variabile nella form che contenga il riferimento all'istanza corrente nella
classe, ma bisognerebbe capire meglio come e' strutturata la faccenda...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 classe,
E' proprio questo, come faccio a leggere queste proprietą se la classe viene
creata da progetti esterni e non ho nessun riferimento ad essa, ovvero come
hai detto tu, come faccio a dichiarare una variabile nella form che contenga
il riferimento all'istanza corrente??
Grazie ancora
Ciao
oZ

 il riferimento all'istanza corrente??
Dato che e' la classe stessa, tramite metodo, a visualizzare la finestra, e'
molto semplice; ti basta dichiarare una variabile pubblica (o routine
property, o metodo...) nella form e caricarla con qualcosa del genere:
Public Sub Anteprima
Dim frmAnt As frmAnteprima
Set frmAnt = New frmAnteprima
With frmAnt
    Set .ParentClass = Me
    .Show vbModal
    '[ecc..]
End With
End Sub
ora il codice interno di frmAnteprima puo' fare riferimento alle property di
ParentClass, che e' proprio l'istanza creata dall'applicazione esterna.


 ParentClass, che e' proprio l'istanza creata dall'applicazione esterna.
Heila!!! Funziona...
Grazie tante, senza di te non ci sarei mai arrivato ad "escogitare" un
sistema del genere (a te sarà banale, ma per me non lo è..)
Grazie ancora
Ciao
oZ

 >     Set .ParentClass = Me
Aaaahh! Adesso ho capito cosa volevi :)
Il metodo sarebbe corretto, se io potessi sostituire Me con un qualsiasi
form.
Se all'interno di Anteprima usi campi/properietà particolari di _quel_ form,
allora forse è meglio usare le variabili pubbliche, perchè non è molto
chiaro il perchè un form sì e l'altro no.
Forse è meglio sì che Anteprima abbia delle proprietà (public, altrimenti
non serve a niente) direttamente corrispondendi all'anteprima stessa.
Ciao

 non serve a niente) direttamente corrispondendi all'anteprima stessa.
Scusa, ma non ho capito nulla di quello che volevi dire...
Io ho aggiunto la seguente proprietà alla Form FRMANTEPRIMA
Dim objParentClas As clsAnteprima
Public Property Get ParentClass() As clsAnteprima
    ParentClass = objParentClas
End Property
Public Property Set ParentClass(ByVal vNewValue As clsAnteprima)
    Set objParentClas = vNewValue
End Property
Prima dello show (nell'Inizializza della ClsAnteprima), come suggerito da
Luca, setto la prop della Form a ME (il Me inteso come la classe
ClsAnteprima). Adesso nella form posso accedere ai valori delle propietà
della classe..
Ciao
oZ

 ClsAnteprima).
Esattamente.
in particolare il meccanismo funziona perche' "Me" in un metodo di classe
indica proprio l'istanza corrente, cosi' come "Me" in una form indica
l'istanza corrente della stessa.


 Scusa, ma non ho capito nulla di quello che volevi dire...
Lascia perdere :) non avevo capito che la proprietą era della form e non
della classe.
Ciao