Newsgroup: it.comp.lang.visual-basic
Titolo: nome di un form in una variabile

Ciao bella gente. E' la prima volta (o quasi) che  posto su questo ng ma cmq
qualcuno di voi già mi conosce.
Ecco il mio problema:
Ho una variabile stringa con memorizzato il nome di un form. Ho bisogno di
fare riferimento a quel form. Per esempio alla caption di quel form.
Mettiamo che la stringa contenente il nome si chiami nome_form (raga che
fantasia) e il nome del form a cui voglio cambiare la caption si chiami
form1. Mi servirebbe forse poter fare riferimento all'insieme dei form? Un
po' come per i controlli si può usare questo codice che mi aveva fornito
Maurizio Borelli ? (lo ringrazio di nuovo visto che mi ha risolto con due
righe di codice una miriade di problemi)
' Form1 (Form)
' Text1 (TextBox)
' Text2 (TextBox)
Private Sub Form_Load( )
  ' Esempio 1
    With Controls
    .Item("Text1").Text = "Ciao"
  End With
  ' Esempio 2
   Controls("Text2").Text = "Mondo"
End Sub
Io so che per l'insieme form si può far riferimento ad un form in
particolare tramite forms(indice), ma vorrei saperne qualcosa di più. Mi
aiutate voi?
Per favore mi potreste almeno dire se secondo voi ciò è impossibile (così mi
metto il cuore in pace e mi metto a pensare qualche altro sistema) o se
esiste cmq qualche metodo per far riferimento ad un form tramite un valore
memorizzabile in una variabile tipo int, boolean, string, ecc? (NON però
form, obyect, ecc, visto che poi di questa variabile dovrei farne due
copie).
Cmq grazie a tutti
BelthaZor

Forse, non sono sicuro ti possa essere di aiuto cmq..
Dim nome_form as Form
Set nome_form = Form1
nome_form.Caption = "Ciao"
Davide Cerbo
www.e-salerno.it
www.e-salerno.it/clippy

 nome_form.Caption = "Ciao"
Pultroppo io ho bisogno di fare due copie di tale variabile cosa che non è
possibile con le variabili form visto che non possono esistere due form con
lo stesso nome e la prprietà 
form.name
 è di sola lettura.
Ti faccio un esempio di Sub che ha lo stesso problema di quella che sto
sviluppando io:
    Public formSecondo As che_ne_so
    Public Nuovo as Boolean
    Public Sub confronta(formDaConfrontare As che_ne_so)
        if nuovo = True Then
            formSecondo = formDaConfrontare
            nuovo = False
        Else
            if formSecondo = formDaConfrontare Then
                formSecondo.caption = "form uguali!"
                formDaConfrontare.caption = "form uguali!"
                nuovo = True
            End if
        End if
    End Sub
La precedente Sub deve essere chiamata almeno due volte per essere utile.
formDecondo è un po' una variabile temporanea che serve per memorizzare un
valore utile alla successiva chiamata della Sub.Se a ".che_ne_so" si
sotituisce ".form" viene dato un errore nella riga contenente "formSecondo =
formDaConfrontare". Quindi la soluzione al problema che mi hai consigliato
tu non funzia. Cmq grazie di averci almeno provato.
Invoco l'aiuto di tutto il ng per questo problema che non mi da pace. A dire
il vero una soluzione alternativa la ho già trovata ma io voglio che il mio
codice sia pulito e lungo lo stretto indispensabile. Quindi penso ankora che
la soluzione al problema sia fare riferimento in qualche modo all'insieme
Forms magari non con il nome ma con qualche valore numeriko, ad esempio ad
alcune Api si deve passare l'handle del form sul quale operare. Premetto che
non so di preciso cosa si sto handle ma potrebbe essere una soluzione.
Oppure su un sito avevo trovato questa procedura che rileva in run-time se
un form è aperto passandogli in entrata il nome del form da rilevare:
Public Function bFormOpen(sFormName As String) As Boolean
Dim frmTmp As Form
  For Each frmTmp In Forms
    If (UCase(frmTmp.Name) = UCase(sFormName)) Then
      bFormOpen = True
      Exit For
    End If
  Next frmTmp
  Set frmTmp = Nothing
End Function
Scusate la lunghezza del post ma questo problema per me è una brutta gatta
da pelare.
Ciao a tutti e grazie per l'eventuale aiuto.
BelthaZor