Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Creazione OCX (OOP)

Ho questo problema:
Ho sviluppato un ocx all'interno del quale ho implementato una gerarchia di
oggetti.
Questo controllo per funzionare correttamente ha bisogno di alcune variabili
dichiarate
globali in un modulo "bas".
Fila tutto liscio fin quando non disegno nel progetto più di un'istanza del
mio controllo.
Ho scoperto che il problema consiste nel fatto che le variabili globali
dell'ocx sono globali
per tutte le istanze del suddetto controllo nello stesso processo.
Vorrei che le variabili globali dell'ocx rimanessero indipendenti dalle
altre istanze del controllo.
In modo che le variabili siano visibili a tutti i moduli di classe contenuti
nell'ocx e non siano visibili
al di fuori di questo.
Esempio pratico:
Creo un'ocx e all'interno di questo creo una proprietà che punta a una
variabile globale dichiarata in
un modulo bas.
Disegno l'ocx due volte sullo stesso form, poi in fase di esecuzione imposto
la proprietà del primo controllo
su un valore qualsiasi. Quando vado a leggere la proprietà del primo e del
secondo ocx saranno entrambe
impostate al nuovo valore.
Grazie in anticipo CIAO

 altre istanze del controllo.
potresti, anzichè usare variabili 'semplici', utilizzare un array dinamico a
cui aggiungi un nuovo valore alla creazione di ogni istanza... magari una
collection
Ciao
Faber

 collection
Ciao Faber
Si infatti avevo pensato anch'io a questo tipo di soluzione. Ma č un po'
sporca dal punto di vista della programmazione ad oggetti.
In realtŕ ci sarebbe anche un'altra soluzione. E cioč centralizzare tutte le
variabili globali in un modulo di classe quale per esempio "UserControl" e
trasformarle in variabili a livello di modulo accessibili tramite routines
dichiarate come Friend. Poi inserire una sola variabile oggetto di tipo
UserControl nel modulo bas che fa riferimento all'UserControl attualmente in
uso. Ma anche questa soluzione mi sembra poco elegante.
Praticamente vorrei sapere se esiste in VB la possibilitŕ di condividere
delle informazioni (variabili) tra i vari moduli di classe all'interno di un
ocx. E che queste variabili siano locali rispetto alla singola istanza
dell'ocx.
Ciao e grazie ancora.

 cio' potrebbe altri svantaggi.
Ok grazie per il consiglio credo che adotterò la prima soluzione eliminando
le variabili globali.
Ciao
Pasquale Minerva

 altre istanze del controllo.


 possibile, di recuperare il più possibile dal codice scritto;
Ciao HellBoy,
Il fatto è che avevo inserito le variabili globali per poter accedere ai
controlli disegnati sull'UserControl, dagli altri moduli di classe del
progetto, senza dover impostare in ogni oggetto una proprietà che
restituisse poi l'UserControl genitore (vedi la mia risposta al thread
"Classi e OCX").
Era una soluzione che si era dimostrata ottimale a livello di design, ma non
avevo fatto i conti con il caso di più OCX disegnati nello stesso progetto
;-) le variabili globali vengono condivise e addio coerenza.... ora mi tocca
cambiare il tipo di accesso ai controlli dell'UserControl e mi sa che
l'unica soluzione e quella di aggiungere una proprietà nascosta
ParentControl per ogni modulo di classe del mio progetto.
Grazie comunque...
Ciao
Pasquale Minerva

 ha scritto nel messaggio
news:8f8kub$ieh$1...@nslave2.tin.it...



Ciao HellBoy,
Infatti quella da te proposta è la prima soluzione a cui avevo pensato
(gestire le variabili globali tramite una collection o una matrice), e anche
Faber mi pare era di quest'avviso.
Avevo anche incominciato ad implementare questa soluzione ma analizzando
meglio la situazione mi sono convinto che il metodo più semplice da
implementare e che offre una struttura di codice più facile da manutenere è
quella di inserire in ogni oggetto una proprietà ParentControl che è un
riferimento all'UserControl genitore.