|
|
|
|
|
Dicas
|
|
Visual Basic (ActiveX/Controles/DLL)
|
|
|
Título da Dica: Como acessar um controle/propriedade pelo nome
|
|
|
|
Postada em 9/9/2003 por Ð@®l@n
Como fazer para acessar dinamicamente a propriedade de um controle, recebendo apenas em runtime o nome da propriedade que se deseja acessar? Se você usa o VB6, isso é fácil, porque ele possui um comando que faz justamente isso: 'CallByName' (se você usa o VB5, dê uma olhada na dica "Como simular o comando 'CallByName' no VB5").
Dim vntRetorno As Variant vntRetorno = CallByName(txtTeste, "Text", VbGet)
Mas, e se você quiser acessar também o controle dinamicamente, tendo o nome dele apenas em runtime? Aí, o comando 'CallByName' sozinho não basta, já que para usá-lo é necessário passar a referência do controle ao qual se deseja acessar a propriedade ou método. Como fazer, então?
Bem, você pode conseguir isso usando a propriedade 'Controls' de um Form:
Dim vntRetorno As Variant vntRetorno = CallByName(Controls("txtTeste"), "Text", VbGet)
Você pode, ainda, estender esse conceito para poder acessar não apenas a propriedade/método de um controle dinamicamente, mas, acessar também um controle de qualquer Form dinamicamente:
Dim oForm As VB.Form Dim vntRetorno As Variant
For Each oForm In Forms If oForm.Name = "frmTeste" Then vntRetorno = CallByName(oForm.Controls("txtTeste"), "Text", VbGet) Exit For End If Next oForm
original: Lobo
|
|
|
|
|