Newsgroup: it.comp.lang.visual-basic
Titolo: HELP : Enumerare i forms

E' possibile in fase di esecuzione enumerare i form del progetto in
esecuzione, ed aprirli conoscendone solo il nome come si fa con i form
caricati ?
Ad esempio se uso il codice:
For a=0 to Forms.Count -1
    if Forms(a).Name="frmPippo" then Forms(a).Show: Exit For
Next
Funziona.
C'e' un modo analogo per attivare forms presenti nel progetto ma non
caricati ?
Grazie
LongBlade
  -----------== Posted via Newsfeeds.Com, Uncensored Usenet News ==----------
 
http://www.newsfeeds.com
       The Largest Usenet Servers in the World!
------== Over 73,000 Newsgroups - Including  Dedicated  Binaries Servers ==-----

 wrote in message
37e65...@goliath.newsfeeds.com...


                                             Ciao a tutti Peppe
[cut]
Al resto non saprei rispondere
--
                         /|\      El Matador di Yew - Europa
                        / | \     Icq:42795350
                       |\ | /|    Non esiste
                       |\\|//|
                       |\ | /|    un'arma pericolosa,
                       |\ | /|
                       |\ | /|    esistono solo
                       |\ | /|
                       |\ | /|    guerrieri
                       |\ | /|
                       |\ | /|    PERICOLOSI
                       |\ | /|
                   ____|\ | /|____
                  (_______________)
                       (_____)
                       (_____)
                         ***
                          *

 Comunque guardati l'help per questa funzione perche' e' molto carina.
Grazie dell' Info perche' questa funzione non la conoscevo pero' <nome_form>
noe e' una stringa ....


Egregio amico anch'io ho un problema simile a quello di Andrea, ma il tuo
suggerimento non e' servito, o forse non abbiamo capito come funziona.
a me in particolare occorre richiamare un form qualsiasi della procedura,
che non sia stato ancora aperto e di cui conosco solo il nome sotto forma di
stringa.
ciao da Peppe Cintura

In un modulo di classe inserisci:
Public Function Frm(ByRef F As String) As Form
    Select Case F
        Case Is = UCase("Form1")
            Set Frm = New Form1
        Case Is = UCase("Form2")
              Set Frm = New Form2
    End Select
    Frm.Show
End Function
a questo punto l'istruzione frm("Form1") aprirà la finestra oggetto Form1
Questa soluzione anche se molto artigianale mi ha comunque permesso di
andare avanti, ma non ha risolto il mio vero problema. Se dovessi avere
buone nuove te lo farò sapere, ma anche tu mi raccomando ......
Ciao Peppe


Purtroppo non mi serve, per lo meno mi serve poco.
Per le mie esigenze tanto vale che nella mia Sub Main mi carichi tutti i
form del progetto per poi andali a visualizzare facendo un ciclo sul
Forms.Count anche se sulla carta la mia soluzione e peggiore della tua per 2
motivi
1) il progetto e MOLTO piu' pesante di quello che prospetta la tua soluzione
2) devo intervenire a volte anche in modo massiccio sul codice per dividerlo
tra gli eventi Form_Load e Form_Activate ecc. ed eliminare gli Unload Me
sostituendoli con i Me.Hide
ha per contro 2 vantaggi:
1) Ad ogni form che aggiungo o rimuovo mi basta fare la stessa operazione
nel Sub Main
2) Non corro il rischio di trovarmi delle istanze indesiderate di form che
con il tuo metodo potrebbero venir create con il New
Resto in attesa di un benefattore che mi (ci) possa risolvere il problema
...
LongBlade
P.S. Mi sono pure "mangiato" la seconda richiesta di supporto gratuito della
Microsoft su questo problema ma resto a piedi ...


 sostituendoli con i Me.Hide
Hai pensato all'eventualità di farti un postprocessore di sorgenti?
Basta aprire tutti i files .Frm, leggersi la seconda riga (che è del tipo
"Begin VB.Form Form1") e estrarre il nome della form che è l'ultima parola.
Praticamente il tuo postprocessore dovrebbe ciclare su tutte le form, e
creare in output il codice che ti serve (direi un select Case) scrivendo
per ogni form 2 linee del tipo:
Select Case "Form1"
    Form1.show
Così basta che fai girare il postprocessore e includi nel progetto il file
che genera.
Inoltre ad un postprocessore puoi far fare anche modifiche direttamente alle
form (tipo sostituire Unload me con me.hide come dicevi più sopra) ,
semplicemente rinominando le form, processandole in input, e riscrivendole
con le modifiche del caso. Io mi sono fatto un programma che inserisce la
gestione errori in tutte le funzioni con questo metodo.
Ciao
*Roby*