Newsgroup: it.comp.lang.visual-basic
Titolo: form

E' possibile aprire la stessa form, due volte contemporaneamente?
Mi spiego: ho la form frmPrincipale contenente un pulsante chiamato cmdApri
Ogni volta che schiaccio cmdApri mi si deve aprire la form frmProva. Una
nuova ogni volta che schiaccio.
Ho cercato di indicizzare la form, ma non è possibile.
Esistono altri metodi?

 wrote in message
news:8iY57.155$NZ6....@news.infostrada.it...

se il tuo form si chiama frmPippo
in un command button puoi mettere :
sub Command1_Click()
    dim Pippo as new frmPippo
    Pippo.show
end Sub
ciao
Enrico

 nuova ogni volta che schiaccio.
Private Sub cmdApri_Click()
    Dim frmNewProva As frmProva
    Set frmNewProva = New frmProva
    frmNewProva.Show
    Set frmNewProva = Nothing
End Sub
Faber


giusto per completezza se usi :
Dim frmNewProva As new frmProva
non hai più bisogno di:
 Set frmNewProva = Nothing
:))
ciaoooo
--
-------
sito: 
www.dadev.it
ultime: Ocx per irc testi
-------

  Set frmNewProva = Nothing
non è un caso che abbia postato una soluzione diversa da quella di Machi
(e dalla tua).
fai questa breve prova: crea un progetto nuovo, aggiungi un Form (oltre
a quello già presente), inserisci due pulsanti su Form1, incolla questo
codice:
Private Sub Command1_Click()
    Dim frmNewForm As New Form2
    frmNewForm.Show
    Set frmNewForm = Nothing
    MsgBox frmNewForm.Name, vbInformation
End Sub
Private Sub Command2_Click()
    Dim frmNewForm As Form2
    Set frmNewForm = New Form2
    frmNewForm.Show
    Set frmNewForm = Nothing
    MsgBox frmNewForm.Name, vbInformation
End Sub
utilizzando la prima sintassi il MsgBox mostra allegramente il nome del
Form2, mentre nella seconda routine c'è un errore di runtime (dovuto al
fatto che frmNewForm non è più un riferimento valido - nota che in
entrambi i casi c'è il Set a Nothing).
questo perché dichiarando As New [NomeClasse] l'istanza viene creata
implicitamente, e un Set a Nothing di quella variabile non toglie
_effettivamente_ il riferimento: in realtà viene ricreato (se non c'è)
ogni volta che accedi a metodi o proprietà dell'oggetto (come in questo
caso, accedendo alla proprietà Name).
il metodo più corretto per dichiarare una variabile oggetto e creare una
nuova istanza è, chiaramente, il secondo; questo discorso si applica non
solo ai Form, ma più in generale a tutte le classi (es. oggetti
Recordset, Connection, ecc...)
Ciao
Faber

 ha scritto nel messaggio
news:9ja87c$mj0b3$1...@ID-66268.news.dfncis.de...

non è proprio così.
il fatto è che non si puo mettere a nothing un oggetto dichiarato ocn new ma
cmq viene rilasciato ugualmente alla fine della funzione (sembra che crei un
reference copia) ...
e cmq qualsiasi oggetto dichiarato in una funzione viene rilasciato comunque
alla fine della stessa... perciò il nothing è ugualmente inutile..
(puoi provare ocn le classi e vedrai che la sub terminate viene richiamata
cmq)
in vb l'oggetto non viene rilasciato quando esistono altri reference per lo
stesso .
Se il reference è dichiarato dim nella funzione o sub e chiaro che viene
rilasciato alla fine della stessa e perciò automaticamente libera tutti gli
oggetti associati.
ciao :))

 oggetti associati.
si, ma quello che avevo fatto io era un esempio abbastanza cretino per
dimostrare l'effetto della dichiarazione con As New  :)
nelle situazioni reali quella variabile potrebbe essere dichiarata come
Private o addirittura Public a livello di modulo, e io preferisco
- liberare la memoria allocata il prima possibile
- essere _sicuro_ che una volta settata a Nothing una variabile questa
_effettivamente_ non sia piů utilizzabile
il primo punto si applica benissimo anche in situazioni tipo ASP, dove
la gestione/liberazione delle classi istanziate č fondamentale
Ciao
Faber

 la gestione/liberazione delle classi istanziate č fondamentale
anche questo č opinabile nelle mie pagine asp uso raramente nothing sempre
per gli stessi motivi che ho gia spiegato....
per finire il discorso...non volevo darti dell'ignorante era solo un
possibile metodo di velocizzare la scrittura del codice e magari per dare 2
info in piů per chi č alle prime armi:)))
ciao

 info in piů per chi č alle prime armi:)))
non ho mai creduto che tu mi dessi dell'ignorante, tanto meno era mia
intenzione fare altrettanto  :)
il punto fondamentale č che imposto esplicitamente una variabile a
Nothing, voglio (e devo) poter essere certo che questa non possa essere
utilizzata; sarebbe un controsenso, altrimenti; per questo ho sempre
considerato come un 'bug' la creazione implicita di un'istanza
Faber

 considerato come un 'bug' la creazione implicita di un'istanza
guarda che non è si puo considerare  bug è una cosa che funziona (per me
benissimo) allo stesso modo in tutti i linguaggi....
chiaramente per gestire enormi allocazioni di memoria il metodo del new in
dichiarazione è sicuramente sbagliato (ma a anche questo dipende dal
contesto)
ma come gia detto prima era solo per dare delle info in più che rendono la
programmazione più veloce.
ciao :))


 benissimo) allo stesso modo in tutti i linguaggi....
C'era un bellissimo libro (di cui non ricordo il titolo... "la memoria
dell'imperatore" forse?) dove venivano trattati gli aspetti semantici dei
linguaggi (non solo di programmazione) e ne usciva un simpatico problema: un
linguaggio con regole troppo strette permette una costruzione molto lineare
ma poco pratica, mentre uno con molta libertà di costruzione permette una
grandissima flessibilità, ma i costrutti diventano complessi, e quindi,
parlando in ambito informatico, molto più propensi a bug.
Il fatto che "si può fare così" non significa che è corretto farlo.
Ciao

 Il fatto che "si può fare così" non significa che è corretto farlo.
questo è chiaro ....vb ha tanti difetti ma sicuramente non quello di dare
problemi con i reference .
Ti assicuro che se tu non metti nessun nothing la memoria viene comunque
rilasciata ma se ti va  puoi anche usarne 3000  non succede mica nulla :))
un ciao a tutti :))