Referenciar objetos

24/08/2005 - 21:29 por Carlos Durán Urenda | Informe spam
Como puedo hacer esto...

teniendo en una variable string el nombre de un objeto del formulario, como
puedo obtener una referencia a dicho objeto? algo mas o menos como lo
siguiente

Dim T as string = "ComboBox1"
Dim Cmbo as ComboBox = Me.Controls(T) ' mi problema es que los
controls solo se referencian
'por
el index

Cmbo.Enabled=True


necesito poder obtener la referencia a un control a partir de su nombre, ya
que este lo obtengo de una BD

Agradezco cualquier sugerencia

Saludos
Carlos Durán

Preguntas similare

Leer las respuestas

#1 SoftJaén
27/08/2005 - 14:36 | Informe spam
"Carlos Durán Urenda" escribió:

teniendo en una variable string el nombre de un objeto del formulario,
como puedo obtener una referencia a dicho objeto? algo mas o menos
como lo siguiente




Hola, Carlos:

La función «TypeName» te devuelve un valor «String», que contiene
información acerca del tipo de datos de una variable, que en el supuesto de
que se trate de un control, te devolverá el tipo de control, en tu caso, te
devolverá la cadena «ComboBox». Una vez obtenido el tipo de control, podrás
compararlo con la variable alfanumérica donde guardas el nombre del control
ComboBox:

Dim T As String = "ComboBox1"
Dim Cmbo As ComboBox
Dim ctl As Object

' Recorremos la colección Controls del formulario
For Each ctl In Me.Controls

' Si se trata de un control ComboBox, referenciamos la variable
If TypeName(ctl).ToString = "ComboBox" Then
Cmbo = CType(ctl, ComboBox)

' Como puede haber más de un control ComboBox en el formulario,
' comprobamos su nombre
If T.ToUpper = Cmbo.Name.ToUpper Then
MsgBox("Nombre del control: " & Cmbo.Name)
' Si es el mismo nombre, abandonamos el bucle
Exit For
End If

End If

Next

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 SoftJaén
29/08/2005 - 16:39 | Informe spam
"Carlos Durán Urenda" escribió:

En realidad lo que necesitaba era obtener una referencia a
travez del nombre del objeto, ...



Creo que eso es precisamente lo que expuse en mi anterior mensaje: obtener
la referencia de un control ComboBox incluido en un formulario, mediante su
propiedad «Name». Si hay algún control ComboBox llamado «ComboBox25», la
variable objeto «Cmbo» quedará referenciada por dicho control. Una vez
referenciada la variable, entiendo que podrás utilizarla. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#3 Carlos Durán Urenda
29/08/2005 - 17:01 | Informe spam
Gracias...

En realidad lo que necesitaba era obtener una referencia a travez del nombre
del objeto, debido a que quiero configurar un formulario segun lo que tengo
especificado en una tabla de la base de datos, en la cual tengo almacenado
el nombre del control y algunas porpiedades.

lo he resuelto utilizando un Select (algo a lo que no queria llegar), pero
ahora que lo pienso, podria haberlo hecho mediante bindings a las
propiedades del control

Gracias por todo
Saludos
Carlos Durán


"SoftJaén" escribió en el mensaje
news:
"Carlos Durán Urenda" escribió:

teniendo en una variable string el nombre de un objeto del formulario,
como puedo obtener una referencia a dicho objeto? algo mas o menos
como lo siguiente




Hola, Carlos:

La función «TypeName» te devuelve un valor «String», que contiene
información acerca del tipo de datos de una variable, que en el supuesto
de
que se trate de un control, te devolverá el tipo de control, en tu caso,
te
devolverá la cadena «ComboBox». Una vez obtenido el tipo de control,
podrás
compararlo con la variable alfanumérica donde guardas el nombre del
control
ComboBox:

Dim T As String = "ComboBox1"
Dim Cmbo As ComboBox
Dim ctl As Object

' Recorremos la colección Controls del formulario
For Each ctl In Me.Controls

' Si se trata de un control ComboBox, referenciamos la variable
If TypeName(ctl).ToString = "ComboBox" Then
Cmbo = CType(ctl, ComboBox)

' Como puede haber más de un control ComboBox en el formulario,
' comprobamos su nombre
If T.ToUpper = Cmbo.Name.ToUpper Then
MsgBox("Nombre del control: " & Cmbo.Name)
' Si es el mismo nombre, abandonamos el bucle
Exit For
End If

End If

Next

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o
sugerido en el presente mensaje.




Respuesta Responder a este mensaje
#4 Carlos Durán Urenda
29/08/2005 - 18:34 | Informe spam
Ok Tienes razón
Gracias

"SoftJaén" escribió en el mensaje
news:%
"Carlos Durán Urenda" escribió:

En realidad lo que necesitaba era obtener una referencia a
travez del nombre del objeto, ...



Creo que eso es precisamente lo que expuse en mi anterior mensaje: obtener
la referencia de un control ComboBox incluido en un formulario, mediante
su propiedad «Name». Si hay algún control ComboBox llamado «ComboBox25»,
la variable objeto «Cmbo» quedará referenciada por dicho control. Una vez
referenciada la variable, entiendo que podrás utilizarla. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o sugerido en el presente mensaje.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida