Newsgroup: it.comp.lang.visual-basic
Titolo: Aprire un form chiamandolo per nome

Vorrei accedere a un form dal nome.
cioe'... vorrei che l'utente potesse
scrivere in un textbox il nome del form e poi tramite un bottone aprirlo.
ho provato con 
Load(text1.text)
ma non funziona.
Non vorrei fare un
IF per ogni form perche' se ne aggiungo uno dovrei andare a aggiornare ogni
volta anche questo.
Non c'e' un modo rapido per accedere a un form
tramite il suo nome?
l'insieme FORMS purtroppo contiene i forms già
caricati...
grazie
_GUS_
--------------------------------
Inviato via 
http://usenet.iol.it

caricati...
infatti, altrimenti come si saprebbe se esistono o meno?
Ciao,
Moreno
#sirri#@#
morenosoft.com#
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

infatti, altrimenti come si
saprebbe se esistono o meno?
beh, li ho creati in ambiente di
progettazione, e il "come si sa se esistono o meno" e' quello che ti ho
chiesto io!!!
Dai... non fare il simpatico che sto strippando... tra un
po' mando una torta di panna montata a Bill...
ho trovato la funzione
(tanto nuova quanto mal-documentata)
CallByName
ma non fa al caso mio:
io non voglio gestire un metodo da stringa, io voglio qualcosa che mi
ritorni un oggetto a partire dal suo nome
ho letto nei vecchi post
qualcosa che utilizzava Microsoft Script Control...
ma c'e' davvero
bisogno di far tanto casino?
ci sono un mucchio di post come il mio, e
nessuno con una risposta migliore di "fatti un select case"...
ma se io
voglio sviluppare qualcosa orientato alla "crescita", devo ogni volta che
aggiungo un form aggiungere una istreuzione Select case?
non mi dire che
non ti sei mai trovato davanti a sto problema...
aspetto fiducioso.


 ha scritto nel messaggio
news:62Z110Z131Z134Y...@usenet.iol.it...


Ho trovato una funzione nascosta dell'oggetto FORMS di visual basic...
praticamente basta fare forms.ADD("form1")
e funziona.
ma da dei
problemi... per esempio in suddetto form, se e' presente una routine di
RESIZE, quando faccio UNLOAD ME, dopo l'unload viene richiamata la routine
di resize (anche se l'oggetto, per quanto ne sappia io, non esista +)
(anche se metto il form = nothing) che, avendo dei riferimenti a oggetti
nel form, provoca la riapertura di quest'ultimo.
Ho notato che non
funziona nemmeno se metto un flag che in form_resize che dica al programma
di uscire senza toccare niente.
il flag appare non settato.
questo mi
fa pensare che quella che richiama l'evento resize sia UN'ALTRA ISTANZA DEL
FORM.
che casino... dai gente risolviamo una volta per tutte questo
problema...ù
posto il codice di lancio e chiusura del form.
premetto
che e' un form mdichild che richiama un altro mdichild.
supponiamo:
form1
il primo form
form2 il secondo
----codice che apre il form2 tramite il
metodo strano:
Set Maschera = Forms.Add("form2") 
  'ATTENZIONE: funzione
non documentata 
  '(e nascosta dell'oggetto FORMS, 
  'che può essere
gestito come un 
  'oggetto Collection, quindi 
  'supporta il metodo
ADD. 
unload me
----codice nel pulsante "esci" del form2:
Unload Me
---codice nell'evento unload del form2:
   MustUnload =
TRUE 'flag
   form1.Show
   Set form2 = Nothing
---codice
nell'evento resize del form2:
Private Sub Form_Resize()
If MustUnload
Then Exit Sub
If Not formAgegru.WindowState = vbMinimized Then
 
   If
formAgegru.WindowState = vbNormal _
    And formAgegru.Height < 6625 Then
_
     formAgegru.Height = 6625
End If
End Sub
Spero di
essere capibile.
Se da form1 chiamo form2.show non si presenta questo
problema.
Non si presenta nemmeno se io elimino la gestione dell'evento
Form_Resize da form2.
provate anche voi, poi mi dite...
grazie
infinite
_GUS_


nel form, provoca la riapertura di quest'ultimo.
mmm... io ho provato ma non mi da questi problemi...
Infatti il ciclo di vita della Form2 č:
Forms.Add "Form2"
->		Initialize
->		Load
Dim obj As Object
For Each obj In Forms
    If obj.Name = "Form2" Then
        obj.Show
        Exit For
    End If
Next
->		resize
->		activate
->		paint
Unload Me
->		query unload
->		unload
->		terminate


>routine di resize 





Mmmh probabilmente e' tutto perche'
io aprivo il form facendo:
set obj = forms.add("form2")
invece ora
provo a fare come fai tu, 
cioe' aggiungere il controllo e DOPO,
cercandolo tramite for each..next, 
visualizzarlo.
Come facevo io
praticamente... boh!
ora provo
.......
...
..
......
........
mmh tutto ok, ma se nell'evento 
resize mi riferisco al form 
tramite,
per esempio
form2.height
invece che con 
Me.height
viene
richiamato di nuovo 
form_initialize... creando un'altra 
istanza del
form.
Mi sembra di capire che io faccio 
finta di essere visual basic
quando 
aggiungo il form alla lista dei 
forms, ma si vede che lascio
perso 
un passaggio...
Insomma... Visual Basic fa partire 
il mio
form, ma non sa di averlo 
fatto (perche' in realta' lo faccio 
io,
fregandolo), cosi' quando ci faccio un 
riferimento, subito mi crea una
nuova istanza dell'oggetto... 
fiducioso che sia la cosa giusta da fare...
CHE PALLE!
mmmh... cos'altro devo fare oltre a forms.add("nomeform")?
viene a qualcuno qualche idea?
Grazie 3000


form.
Dai un po' un'occhiata qui... (non l'ho testato)
http://support.microsoft.com/support/kb/articles/Q194/9/12.asp
