Newsgroup: it.comp.lang.visual-basic
Titolo: Cambio dinamico di proprieta di un qualsiasi controllo in RUNTIME !!!

Saluti a tutto il NG, come tutti saprete è possibile cambiare le proprietà 
di un qualsiasi oggetto in RunTime esempio:
Text1.Caption = "testo"
Il modo appena descritto io personalmente lo considero statico scritto nel 
codice in questo modo
e per un particolare utilizzo sul quale non stò a dilungarmi inutilmente, ho 
necessità
di acquisire il nome dell'oggetto dinamicamente da una variabile stringa in 
questo modo:
Dim MiaStringa As String
MiaStringaNomeControllo = "Text1"
Come ben si può notare adesso occorrerebbe conoscere la sintassi corretta 
per poter ottenere di
modificare "MiaStringaNomeControllo.Caption" ovvero il riferimento al 
controllo deve avvenire
dinamicamente grazie alla variabile stringa e non staticamente come da 
codice Text1.Caption = "testo"
Ovviamente MiaStringaNomeControllo deve o dovrebbe essere convertita nel 
riferimento
oggetto di cui sopra io avevo provato così:
Dim MiaStringa As String , NomeControllo As Control
MiaStringaNomeControllo = "Text1"
Il problema viene adesso, infatti ho provato in tutti i modi da me 
conosciuti aiutandomi anche con MSDN
per cercare di assegnare a NomeControllo il riferimento a 
MiaStringaNomeControllo, in modo da poter
poi ottenere una cosa simile a riferimento assegnato.
NomeControllo.Caption="testo"
In pratica vorrei sapere se sto chiedendo troppo a VB6 oppure per mancanza 
di esempi in questo senso
in MSDN non ne vengo fuori da questo problema !!!
Attendo i Vostri  preziosi consigli
Ivan.

 NomeControllo.Caption="testo"
Me.Controls(NomeControllo).Caption = "testo"
Ciao.
Mauro

 NomeControllo.Caption="testo"

 codice Text1.Caption = "testo"
Una cosa del genere?
'// decidiamo di usare solo Forms o PictureBoxes come container
'// probabilmente funzionerebbe anche con i Frames, prova un po'
Public Sub CambiaTesto(ByRef canvas As Object, _
		ByVal nomeControllo As String, _
		ByVal nuovoValore As String)
    If Not (canvas Is VB.Form) Then
        If Not (canvas Is VB.PictureBox) Then
            Err.Raise vbObjectError Or 1001, _
	    "Procedura CambiaTesto usata su un contenitore non valido"
	    Exit Sub
	End If
    End If
    Dim ctl As Control
    On Local Error Resume Next
    Set ctl = canvas.Controls(nomeControllo)
    If (ctl Is Nothing) Then
        Err.Raise vbObjectError Or 1002, _
		"Il controllo '" & nomeControllo & "' non esiste"
	Exit Sub
    End If
    ctl.Text = nuovoValore
    If (Err.Number) Then
        Err.Clear
        ctl.Caption = nuovoValore
	If (Err.Number) Then
            Err.Raise vbObjectError Or 1003, _
	    	"Il controllo '" & nomeControllo & "' non ha la
		proprieta` Text ne` Caption"
	    Exit Sub
	End If
    End If
 
End Sub
Non amo granche` questa tecnica, ma ammetto di aver usato talvolta
marchingegni simili.
-- 
ciao, hal


No Mauro, non funziona ERRORE COMPILAZIONE "Utilizzo della parola chiave ME 
non Valido"
Centra per caso anche dove vengono eseguite queste istruzioni ?
io le eseguo in una SUB nel Modulo.bas

 io le eseguo in una SUB nel Modulo.bas
E allora specifichi la form:
frmTuaMaschera.Controls(NomeControllo).Caption = "testo"
Ciao.
Mauro

Troppo complicato questo HAL !!!
qualcosa di piu immediato ?

 Mauro
Si Mauro era la Mask, grazie hai centrato il problema in pieno !!!
Salutoni :-) 

 ha scritto nel messaggio 
news:435553fd$0$8478$5fc...@news.tiscali.it...

Emiliano, ci ho provato con CreateObject ci sono impazzito tutto il 
pomeriggio, la soluzione ottima concisa e perfetta me l'ha trovata Mauro !!!
Grazie tuttavia del suggerimento :-)
Ivan

 qualcosa di piu immediato ?
la risposta di Mauro.
-- 
ciao, hal

 la risposta di Mauro.
Hal... secondo te se uno fa una domanda di quel tipo si
preoccupa del tipo di oggetto e dei controlli di errore?
Ciao.
Mauro

 preoccupa del tipo di oggetto e dei controlli di errore?
;-)
-- 
ciao, hal

Se non ho capito male vorresti che dato un oggetto qualsiasi poter scrivere in una sua proprietà non ben specificate...
ES. Oggetto.proprietà = "testo"
Innanzi tutto non puoi utilizzare "proprietà" come una variabile.
se devi attribuire dei valori a proprietà ben specifiche per ogni titpo di oggetto occorre effettaure una select case sul tipo di oggetto per poi attribuire il valore alla giusta proprietà.
ciao Lex
-- 
Lex 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-695823.html
Inviato via 
http://www.itsistemi.net