Newsgroup: it.comp.lang.visual-basic
Titolo: come restituire una form da dentro una classe

Se faccio
dim x as form
set x = new form1
dove form1 è una form ... non faccio altro che assegnare un
riferimento ad x per la mia form1.
Ora immaginate di dover mettere una form in una classe
e fare in modo di dover restituire l'oggetto form come proprietà
di default.
Per essere considerata proprietà di default, ci deve per l'appunto
essere una proprietà, ma di che tipo? Form, object ...
Però ammessa anche la proprietà, i conti non mi tornerebbero ...
Sto ancora sotto l'effetto panettone ... aiutatemi voi.
Ciao
Andrea

 Però ammessa anche la proprietà, i conti non mi tornerebbero ...
In che senso?
se non ti torna come farla diventare proprieta' di default, vedi menu' 
Strumenti->Attributi routine->Opzioni->ID Routine
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 di default.
<IMHO> 
Le proprieta' di default sono un buon modo per incasinare
il codice.
Ulteriori argomenti contrari sono l'esposizione all'esterno
di un oggetto interno (addio incapsulazione) e la pratica
impossibilita' di esporre successivamente la classe in una
dll separata, perche' dovresti ritornare Object e non piu'
VB.Form (addio riciclo del codice).
</IMHO>
-- 
ciao, hal

No, non mi torna che essendo pubblica devo avere quindi
una proprietà che si chiama form, piuttosto che ciccio pluto
o paperino che sia di tipo object nella quale ci spiaccico
dentro il mio bel form con una set
Volevo invece fare una cosa più pulita ... ma mi sà che con
il vb6, non si può.
Se si poteva implementare da form magari era diverso, ma non
si può
Andrea

Beh diciamo che sto utilizzando questo approccio poco
elegante se vogliamo per condividermi in toto una form, con
annessi e connessi tra due applicazioni che fanno uso della
stessa logica e interfaccia.
Più semplice che avere due programmi con lo stesso codice
da mantenere separatamente no?
Comunque leggo di un VB.Form ... quindi in qualche modo
è possibile ritornare direttamente l'oggetto form. O sbaglio?
Ciao
Andrea 

 è possibile ritornare direttamente l'oggetto form. O sbaglio?
Ricordati che VB non e' scritto in VB... se sia possibile ottenere quello 
che chiedi creando una type library esterna non lo so, ma in codice VB 
"liscio" non mi risulta si possa fare


 è possibile ritornare direttamente l'oggetto form. O sbaglio?
Se si tratta di classi private e' possibile restituire, cosi' 
come e' possibile implementare, l'interfaccia Form.
Che sia sempre bene farlo, dipende...
-- 
ciao, hal

 Che sia sempre bene farlo, dipende...
Ahimč per essere istanziata la classe, deve per forza essere pubblica.
Quindi niente.
Ciao
Andrea

Oddio, non č che ne abbia strettamente bisogno. Di fatto
oggi mi passavo il reference della form, in questo caso mdi,
per poi dirgli ad una proprietą quale era il form correntemente
attivo.
Ci devo ragionare su, se oltre a questo problema facilmente
arginabile, avevo utilizzato questa strada per qualche piccolo
particolare che al momento mi sfugge.
Ciao
Andrea 

 attivo.
Definisci un'interfaccia e falla implementare ai form con
cui vuoi interagire e passa avanti e indietro riferimenti
a questa interfaccia.
In questo modo:
- non esponi direttamente gli oggetti interni;
- puoi applicare il codice a *qualsiasi* oggetto che la 
  implementi;
- puoi riferirti esplicitamente all'interfaccia anche in 
  una classe pubblica;
- in teoria avresti anche il controllo sui tipi, ma il 
  compilatore vb6 e' un po' bacato in questo senso e non
  sempre segnala passaggi di variabili di tipo sbagliato.
-- 
hth, hal

Avrebbe senso per una sola form?
Non lo so!
Andrea 

 Quindi niente.
Rimanendo nella teoria (ricorda che però non si fa) puoi fare così:
' Nella classe
Public Function MyForm As Object
    Set MyForm = Form1
End Function
' Nel programma esterno
Dim f As Form
Set f = MyClass.MyForm()
Ciao
--
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 Avrebbe senso per una sola form?
Ha senso ogni volta che ha senso progettare con diligenza.
-- 
ciao, hal

 Ha senso ogni volta che ha senso progettare con diligenza.
Non posso darti torto ... ma nell'atto pratico, ero partito da un
progetto piccolo piccolo, che mano a mano sto allargando.
L'esigenza di tirare fuori alcune form con annessi e connessi
è nata giusto l'altro ieri, per poter riusare interamente una porzione
di progetto per un tool aggiuntivo che deve collaborare ma al
tempo stesso essere indipendente.
Comunque si, mi sto attrezzando per implementare le interfaccie.
Ciao
Andrea 

 Rimanendo nella teoria (ricorda che però non si fa) puoi fare così:
Appunto non si fà ... :) perchè così lo avevo fatto anche io, ma non mi 
piaceva
avere una dll esterna che esponeva tutto, quindi sto andando di interfaccia.
Comunque grazie per l'aiuto.
Ciao
Andrea 

il codice.
Concordo assolutamente. Io non le uso mai.
--
Ciao!
Luca Menegotto