Newsgroup: it.comp.lang.visual-basic
Titolo: Usare una variabile per richiamare un oggetto...come si fa?

Salve a tutti
Ho una trentina di textbox dalle quali devo recuperare il contenuto al
momento della pressione di un tasto.
Le text box si chiamano esempio text1 text2 text3 ecc.
Mi sarebbe molto utile se potessi richiamarle usando un ciclo for tipo:
For I = 1 to 30
Variabile = text(I).text
.....
next I
C'e' modo?
Grazie in anticipo

 next I
Devi crearti una matrice di controlli, poi il programma funziona quasi
esattamente come lo hai scritto tu. (For I = 0 To 30, non 1)
Prova per semplicità a fare così:
Crea una TextBox, selezionala, poi fai un semplice "copia e incolla".
VB ti chiederà: "Esiste già un comando di nome Text1, vuoi creare
una matrice di controlli ?" o qualcosa di simile, digli di sì e sei a posto.
Poi puoi incollare tutte le TextBox che vuoi. La prima avraà indice Zero,
le altre ovviamente andranno a crescere.
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com









Se poi vuoi caricare i TextBox via codice, poichè non potresti sapere quanti
TextBox ti potrebbero servire ....
.... ( ad esempio nel caso in cui apri una tabella e vuoi visualizzare tutti
i campi di un record che cambiano in numero da tabella a
a tabella) puoi usare :
    Sintassi :
                Load Object(Index)
    quindi :
            Dim oRs as Recordest, fld as Field, I as Integer
            I = 0
            For Each fld in oRs.Fields
                    If I > 0 Then    ' Non viene caricato perchè esiste già
sul Form
                        I = I + 1
                        Load Text1(I)
                    End If
            Next fld
ovviamente sul form devi averre gia un controllo Text1(0) e sulla base di
quello li carichi col comando Load visto sopra
Palla da gestire ..........  le posizioni dei Text1(indice) creati dal
codice ..... è certo più noioso, ma PIU' flessibile

Se non vuoi crearti una matrice di controlli puoi ciclare attraverso la
collection controls
usando l'istruzione TypeOf.
CIAO


...


 wrote in message 8121rp$a3m$1...@serv1.iunet.it...


Immagino che il trentinaio di textbox non siano gli elementi di un vettore
di controlli (se è così, perché non lo sono?); in questo caso potresti usare
un metodo come il seguente:
dim ctlX as control
For each ctlX in Me.Controls
    If TypeOf ctlX is TextBox Then
        Variabile = ctlX.Text
    End If
Next
Se non tutti i contenuti dei TextBox vanno salvati, allora dovrai "marcare"
in qualche modo, ad esempio assegnando un opportuno valore al campo Tag, i
TextBox da salvare; aggiungi poi la condizione
if ctlX.tag = "Salvami" then Variabile = ctlX.Text
Però, non riesco a immaginare un motivo valido per non aver creato un
vettore di controlli, che ti avrebbe permesso di fare proprio quello che hai
portato come esempio nel tuo messaggio:
For nX = 1 To 30
    Variabile = TextBox(nX).Text
Next
che è un codice molto più efficiente e veloce del precedente.
--
Lunga vita e prosperità
Daniele (Joshua)


grazie di cuore a tutti