Newsgroup: it.comp.lang.visual-basic
Titolo: Usare una variabile come nome di una label in VB 2005 Express





La presente per esporre quanto segue.


 


Vorrei riferirmi a una label tramite una variabile, 
ma 
non vi riesco.


 


Per esempio: ho una label chiamata 
"pippo".


 


invece di scrivere


Me.pippo.Text = "Ciao Mondo"


 


vorrei scrivere


Dim MioNome As String


MioNome = "Pippo"


Me.MioNome.Text = "Ciao Mondo"


 


La riga di cui sopra è palesemente 
errata.


Quale sarebbe la sintassi esatta?


 


Ringraziando porgo cordiali saluti.


 


Michele


 


 


 



Me.pippo.Text = "Ciao Mondo" ...
non so se quanto segue è una porcheria, ma dovrebbe funzionare
For Each Control As Control In Mainform.Controls
If  Control.Name = 
pippo.name
 Then
    Control.text = "Ciao mondo"
End If
Next
mk


Dim mioNome As Label
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
    mioNome = Me.Label1
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
    mioNome.Text = "Quello che vuoi"
End Sub
-- 
---------------------------
Mauro Gamberini
http://www.riolab.org/





Vi ringrazio per la celere risposta.


Le soluzioni che mi avete offerto 
sono
 adatte per fini


diversi da quello che intendevo 
realizzare.


Soluzioni, comunque, che custodirò


qualora in futuro ne avrò 
di bisogno.


 


La mia esigenza è stata affrontata in 
passato


e risolta con gli strumenti offerti da 
Clipper,


Delphi e VBA. Sono certo 
che anche
 in VB 2005 Express


possa risolvere il problema. Magari faticherò un 
po' di più.


 


Cordiali saluti.


 


Michele


 




Stai cercando una cosa del genere?
        Dim nome As String = "pippo"
        For Each Control In Me.Controls
            If Control.Name = nome Then
                Control.Text = "Ciao Mondo"
            End If
        Next
ciao

 Quale sarebbe la sintassi esatta?
In VB6 č cosě:
Private Sub Form_Load()
    Dim minni As String
    minni = "pippo"
    Me.Controls(minni).Caption = "Topolino"
End Sub
...in .NET credo sia molto simile
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it
 


Hai centrato il concetto.
Molto simile anche a VBA.
Purtroppo non c'č verso in VB 2005 Express.
Thanks
Michele 

 Purtroppo non c'è verso in VB 2005 Express.
Io non ho proprio capito cosa vuoi fare. La label la devi creare 
dinamicamente, o l'hai già sul form? Se l'hai già sul form, perché ti 
devi riferire ad essa con un nome diverso?
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3, I suppose", molto di più di semplici FAQ!
http://it.openoffice.org/doc/manuali/

 devi riferire ad essa con un nome diverso?
Ah, vedendo l'esempio di Tiscali forse ho capito. Vuoi riferirti a un 
controllo tramite il suo nome contenuto in una stringa? Se è così, puoi 
fare esattamente come ti ha suggerito Tiscali. Ovviamente userai la 
proprietà Text, perché Caption non esiste.


 riferire ad essa con un nome diverso?
In una form ho 100 label nominate con un criterio particolare.
Devo variare il testo di una tra queste etichette in modo casuale.
La routine genera a caso il nome di una di queste label.
Tale nome casuale è collocato in una variabile.
La variabile sarà usata per "puntare" sulla label di cui porta il nome
al fine di variare il testo.
Saluti.
Michele

 proprietà Text, perché Caption non esiste.
Un attimo fa ho provato l'esempio di Tiscali: non funzionava.
Riprovando adesso è tutto ok.
Sicuramente avrò riscritto male il codice e/o sarò stanco della giornata.
Ringrazio Tiscali per la soluzione e Vitriol per avermi "istigato" a 
riprovare.
Sarà mio dovere ricambiare la cortesia.
Cordiali saluti.
Michele

 al fine di variare il testo.
Ma non potevi indicizzare i controlli,
e generare un numero random?
Forse era meno complicato...


 Forse era meno complicato...
in .net non ci sono più le matrici di controlli ....
mk

 ha
scritto:

Volendo si possono fare anche in .Net
Copio da un pezzo di programma:
      For Row As Integer = 0 To Righe - 1
         LbINPS(Row) = New Label : Me.Controls.Add(LbINPS(Row))
         With LbINPS(Row)
            .Text = (Row * 2) + 2).ToString
            .Size = LbINPS(0).Size
            .Font = LbINPS(0).Font ' Carattere
            .TextAlign = ContentAlignment.MiddleCenter
            .BorderStyle = LbINPS(0).BorderStyle
            .Tag = Row
            .Left = LbINPS(0).Left
            .Top = LbINPS(0).Top + (LbINPS(0).Height + 4) * Row '+ OfsV 
         End With
  Next
Il problema è che l'indice non è visibile in nessun modo ed ho dovuto usare il
.Tag per ricordarlo.
Comunque si può fare.
--
ciao
  Stefano

      For Row As Integer = 0 To Righe - 1
       For Row As Integer = 1 To Righe - 1
va meglio
--
ciao
  Stefano