PDA

Visualizza versione completa : [Vb6] Form Variabile


zemas
17-07-2009, 09.38.23
Ciao a tutti,
ho i lseguente problema:
voglio creare una funzione generica che apra una determinata form in base a cosa seleziono nella form principale.

Ad esempio la funzione che scrivo quì sotto la uso per chiudere tutte le form
aperte:
<
Dim frm as Form
For Each frm In Forms
If frm.name="MDIStart" then
Else
Unload frm
End If
Next
>
Qualcuno può aiutarmi a fare l'esatto opposto?

Grazie

LoryOne
17-07-2009, 11.00.47
Se vuoi te le do io una mano, basta che mi spieghi cosa fa il codice che hai postato :)

Mass8
17-07-2009, 11.54.10
public sub apriform(nomeform as string)
open nomeform
end sub

L'ho scritto senza VB, spero la sintassi sia giusta. Spero soprattutto di aver capito

zemas
17-07-2009, 13.44.37
Ciao LoryOne,
cercherò di essere più chiaro.

Ho un MdiForm con x Form Child, da una di queste form che si chiama "FrmMenu" devo aprire in base a cosa seleziono da un menu un'altra form, il codice è questo (ovviamente incompleto perchè non riesco):

<<

Function ApriForm()

Dim frm as Form
Dim NomeForm As String

On Error GoTo Err_ApriForm

NomeForm = "Frm" & NomeTab ' NomeTab è una variabile che recupero da FrmMenu

For Each frm In Forms
If frm.name=NomeForm then
frm.show
End if
Next

Err_ApriForm:
If Err.Number <> 0 Then
MsgBox Err.Description, vbInformation, "Errore Nr. " & Err.Number & " -ApriForm"
Err.Clear
End If


End Function
>>

Mass8
17-07-2009, 13.52.29
Adesso non so se mi confondo con .net ma non si usa mica showmdi e non show?
Comunque non capisco cosa non funziona, non si apre la form?
For Each frm In Forms
If frm.name=NomeForm then
frm.show
End if
Next
Perché fai il ciclo? secondo me non serve, puoi fare direttamente solo la if. Inoltre sarebbe meglio che il nomeform lo passassi come parametro e non come variabile globale (è solo una cosa stilistica)

zemas
17-07-2009, 14.01.13
Ciao Mass8,
in vb6 si usa show

In realtà il ciclo volevo usarlo per leggere tutte le form presenti nel programma
e quando trova la form uguale alla variabile la apre.

Però come faccio io legge solamente le form aperte e non trovo il modo per leggerle tutte anche quelle chiuse

:wall:

Mass8
17-07-2009, 14.39.59
Per show immaginavo
Il ciclo ovviamente legge le forms che appartengono alla collection form, ma ho paura che legga solo quelle effettivamente aperte e che quindi sono nella collection
Ma se passi il nome che te frega di fare il ciclo? Stessa cosa per chiuderle

zemas
17-07-2009, 16.00.45
Mi interessava solo per evitare di scrivere troppo codice
Le form nel mio progetto sono parecchie.

Mass8
17-07-2009, 19.07.25
Ma scusa
sub apriform(dim formdaaprire as form)
formdaaprie.show
end sub
sub chiudiform(dim formdachiudere as form)
formdachiudere.close
end sub

sono 3 righe, meno non riesco

Cmq indagherò se nella collection forms c'è qualche cosa. Oppure un db in cui scrivi le form esistenti