Autor Tema: Crear nuevos objetos a partir de Controls  (Leído 5567 veces)

0 Usuarios y 1 Visitante están viendo este tema.

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Crear nuevos objetos a partir de Controls
« en: Marzo 24, 2010, 08:52:12 pm »
Hola, se que se pueden referenciar objetos por su nombre a partir de la coleccion Controls de la siguiente manera:

DIM MiNombre As String, Numero as Integer

For Numero = 1 to 3
  MiNombre = "Label" & Numero
  Me.Controls(MiNombre).ForeColor = vbRed
Next

Pero, � sabr�a alguien decirme si teniendo en cuenta que tengo el objeto Label1(0) puedo a�adir nuevos elementos con el Load al array Label() con el Load, algo as� como  Load Me.Controls("Label" & Numero ...) ? la duda es que no se me ocurre como referenciarle el Index que debe crear.

Gracias

Añado este comentario, ya que parece ser que la cosa va por ahí:

set Cmd1 = Controls.Add("vb.commandbutton", "Cmd1")

aunque no acabo de cogerle el tranquillo por muchas vueltas que le doy a este enlace http://www.vbforums.com/showthread.php?t=342054





« última modificación: Marzo 24, 2010, 09:06:36 pm por erbuson »

NolO

  • Kilobyte
  • **
  • Mensajes: 73
  • Reputación: +6/-0
    • Ver Perfil
Re:Crear nuevos objetos a partir de Controls
« Respuesta #1 en: Marzo 24, 2010, 09:05:25 pm »
Hola, se que se pueden referenciar objetos por su nombre a partir de la coleccion Controls de la siguiente manera:

DIM MiNombre As String, Numero as Integer

For Numero = 1 to 3
  MiNombre = "Label" & Numero
  Me.Controls(MiNombre).ForeColor = vbRed
Next

Pero, ¿ sabría alguien decirme si teniendo en cuenta que tengo el objeto Label1(0) puedo añadir nuevos elementos con el Load al array Label() con el Load, algo así como  Load Me.Controls("Label" & Numero ...) ? la duda es que no se me ocurre como referenciarle el Index que debe crear.

Gracias

Seria algo asi

Código: (vb) [Seleccionar]
Private Sub Form_Load()
         For i=0 to n
               Load Label(i + 1)
         Next
End Sub

Te dejo un Link para que veas un http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/12.htm

Espero te ayude.

Saludos.

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Re:Crear nuevos objetos a partir de Controls
« Respuesta #2 en: Marzo 24, 2010, 09:08:53 pm »
Gracias, pero este no es el problema, ya que lo que me comentas lo tengo claro, lo que quisiera es poder crearlos de un modo similiar a esto:  Load "Label"(i + 1)


seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Crear nuevos objetos a partir de Controls
« Respuesta #3 en: Marzo 24, 2010, 10:09:04 pm »
con CallByName se puede poner el nombre del objeto como string, ya pregunto ssccaann43 algo parecido la otra vez...buscalo..

saludos.

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Re:Crear nuevos objetos a partir de Controls
« Respuesta #4 en: Marzo 25, 2010, 03:40:24 am »
En la respuesta que se le dio a ssccaann43 no se parece para nada a lo que yo busco, porque el problema está en que no atino a ver la forma de indicarle el indice. De todos modos gracias pero creo que voy a intentar solucionar el problema de otra manera ya que lo que tenía pensado me lo complicará demasiado para correcciones futuras.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Crear nuevos objetos a partir de Controls
« Respuesta #5 en: Marzo 25, 2010, 01:42:02 pm »
En la respuesta que se le dio a ssccaann43 no se parece para nada a lo que yo busco, porque el problema está en que no atino a ver la forma de indicarle el indice. De todos modos gracias pero creo que voy a intentar solucionar el problema de otra manera ya que lo que tenía pensado me lo complicará demasiado para correcciones futuras.


Me.Controls(INTEGER) = object

despues para buscar un control por el name, tenes q hacer un bucle recorriendo el array Me.Controls y comprobando si el Me.Controls(index).Name = lo que buscas.

Código: (vb) [Seleccionar]
Function GetElement(Byval strName As String) As Object
   Dim objTemp As Object
   
   For Each objTemp In Me.Controls
      If objTemp.Name = strName Then
         Set GetElement = objTemp
         Exit Function
      End If
   Next
End Function

Fijate si funciona, la hice recien y no lo probe. Saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion