Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con i moduli di classe

Ciao a tutti,
In un modulo di classe che stò impelmentando, volevo inserire un tipo
definito da me e renderlo pubblico. L'MSDN specifica quanto segue: "nei
moduli di classe è possibile creare un tipo definito dall'utente come
Privato o Pubblico". E poi aggiunge: "Nota   Se dichiarati specificando la
parola chiave Dim, i tipi definiti dall'utente inclusi in moduli standard e
di classe vengono automaticamente impostati come pubblici. Se si desidera
che siano privati, è necessario dichiararli specificando la parola chiave
Private."
Se io scrivo
Public Type MessaggioEstratto
    Data As Date
    Ora As Date
    Oggetto As String
End Type
all'interno del modulo mi dice "Impossibile definire come Public un tipo
definito dall'utente all'interno di un modulo di classe".
Allora io me lo sono dichiarato privato e ho pensato di dichiarare pubblica
una matrice
Public MatriceMessaggiEstratti as MessaggioEstratto ma mi da un messaggio
analogo.
Domanda: Come faccio ad elaborare dei dati all'interno di un modulo di
classe e  inserirli in una matrice ("tipizzata "come tipo definito
dall'utente) accessibile anche all'esterno del modulo di classe?
Grazie
hyppos

 dall'utente) accessibile anche all'esterno del modulo di classe?
devi costruire un'altra classe invece che usare un type e poi istanzi
quella.
CIAO


Il problema rimane perché comunque i dati da passare da una classe all'altra
sono contenuti in una matrice e poi rimarrebbero ugualmente vincolati
all'interno del secondo modulo di classe.
Io invece ho bisogno di accederci da fuori.

 wrote in message
0loN7.28317$BA4.9...@news1.tin.it...


 definito dall'utente all'interno di un modulo di classe".
[SNIP]
Per la precisione, ti dice
"Impossibile...all'interno di un modulo di oggetto *privato* "
Anche la classe stessa deve essere pubblica
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Prova cosě :
1) crei la tua struttura privata;
2) crei Array con tipo struttura;
3) crei le proprierty Let e Set per leggere/scrivere Array;
4) usa le proprierty passando l'indice che t'interessa per leggere e
scrivere il valore dell'array
Fammi sapere come va.
tiziano

 ha scritto
| Se io scrivo
|
| Public Type MessaggioEstratto
|     Data As Date
|     Ora As Date
|     Oggetto As String
|
| End Type
|
| all'interno del modulo mi dice "Impossibile definire come Public un tipo
| definito dall'utente all'interno di un modulo di classe".
| Allora io me lo sono dichiarato privato e ho pensato di dichiarare pubblica
| una matrice
| Public MatriceMessaggiEstratti as MessaggioEstratto ma mi da un messaggio
| analogo.
| Domanda: Come faccio ad elaborare dei dati all'interno di un modulo di
| classe e  inserirli in una matrice ("tipizzata "come tipo definito
| dall'utente) accessibile anche all'esterno del modulo di classe?
Due modi:
1) dichiari Private il tuo UDT all'interno della classe, Private la variabile, ed esponi dei metodi
(public) che ti permettano l'accesso ai campi del tuo UDT (specificando tra i parametri la posizione
nel vettore)
2) crei la tua classe senza UDT (quindi dichiarando i campi del tuo UDT come *variabili* Private
visibili al solo modulo), esponi dei metodi (Public) per il trattamento dei campi (che ora sono
variabili rappresentative di un unico elemento dell'array), quando vuoi usare la tua classe, dato
che lavora su un unico elemento, ne fai un vettore (un vettore di istanze di quella classe).
3) (me lo ero scordato, ma e' la soluzione peggiore) dichiari il tuo UDT in un modulo esterno.

 Private."
Questa volta ho imparato :)
Il type deve avere la stessa visibilità della var, quindi se la var è
publica il type deve essere pubblico.
I type solitamente non possono essere passati come parametri/valori a membri
pubblici di una classe.
In genere si dovrebbe usare una definizione di Friend del membro.
VB6 a quanto pare rende possibile dichiarare pubblici dei tipi se inseriti
tra le dichiarazioni di un modulo di classe multiuse/globalmultiuse, in modo
da poterle vedere anche se la classe fa parte di un'activex esterno.
Ciao

 Io invece ho bisogno di accederci da fuori.
puoi definire tranquillamente una matrice di oggetti ...
se dichiari tutti e due i moduli pubblici puoi accederci "da fuori" ....
CIAO

Grazie a tutti!
Ora provo le varie soluzioni.