Principales respuestas
Array con nombres de controles sin Indice

Pregunta
-
Hola buenas tardes gente.
Tengo una duda que quiero resolver.
Yo por ejemplo tengo este codigo de creacion de controles por su index.
Basicamente lo que hace es crear cuadros de imagen segun el cuadro de image previamente creado
en funcion a los indices del array "characteres" el cual contiene los lenght de palabras escritas previamente.
Cuadri1(0) << Control Image
El codigo en sí. Crea cuadros de image por caracter de palabra
Perro = [] [] [] [] []------------------------
Una vez comprendido el codigo
Esta es la cuestion:
Yo tengo mas palabras, no solo una.
Tengo 10 palabras las cuales por eso cree Cuadri1(0) Cuadri2(0) ... Cuadri10(0). y este codigo solo me deja reemplazar caracteres por cuadros de una sola palabra.
Dim A As Long For transformacion1 = 1 To Characteres(0) A = Cuadri1.Count Load Cuadri1(A) ' le asignamos la posición, el caption y lo hacemos visible 'con cuadrados vacios With Cuadri1(A) .Left = Cuadri1(A - 1).Left + 462 .Picture = Imagenes.ListImages(11).Picture .Visible = True End With Next 'PALABRA 1
Entonces se me surgio la idea de crear un array con los nombres de los controles, asi puedo usar la variable del array para crearlos todos en 1 o 2 for, en vez de repetir todo denuevo con cada "Cuadri"
quedando asi:
Dim A As Long Dim Creacion As Integer Dim transformacion("Cuadri1", "Cuadri2", "Cuadri3", "Cuadri4", "Cuadri5", "Cuadri6", "Cuadri7", "Cuadri8", "Cuadri9", "Cuadri10") As String For Creacion = 1 To Characteres(9) A = trasnformacion(Creacion - 1).count Load transformacion(Creacion -1)(A) With transformacion(Creacion - 1)(A) .Top = transformacion(Creacion - 1)(A - 1).Top + 462 .Picture = Imagenes.ListImages(11).Picture .Visible = True End With Next
Pero no me devuelve los eventos como "Count" "top" y "left"
Solo me dice que "no coinciden los tipos"
Queriendo usar los nomrbes Cuadri1,Cuadri2,Cuadri3... etc..
Para identificar los controles previamente creados.
Entonces aca va la pregunta ¿Existe alguna forma de poner Nombres de controles previamente creados en un array y usarlos para crear controles a base de index?
Y la otra es: Que otro metodo puedo usar?
Visual basic 6
Es para un parcial
- Editado Sergio Gerard viernes, 12 de mayo de 2017 22:02 Por errores tipograficos
Respuestas
-
Puedes nombrar a cada objeto mediante la colección Controls, por ejemplo:
Private Sub cmdCrearPictures_Click() Dim Palabras(3) As String Dim Index As Integer Palabras(0) = "Visual" Palabras(1) = "Basic" Palabras(2) = "6.0" For Index = 0 To UBound(Palabras) - 1 Dim CharIndex As Integer For CharIndex = 0 To Len(Palabras(Index)) - 1 Dim NewIndex As Integer NewIndex = Controls("Cuadri" & (Index + 1)).Count Load Controls("Cuadri" & (Index + 1))(NewIndex) With Controls("Cuadri" & (Index + 1))(NewIndex) .Left = Controls("Cuadri" & (Index + 1))(NewIndex - 1).Left + _ Controls("Cuadri" & (Index + 1))(0).Width + 16 .Visible = True End With Next Next End Sub
Tengo un array con tres (3) palabras (Visual, Basic, 6.0) y tres (3) objetos "seed" (Cuadri1, Cuadri2, Cuadri3)
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Sergio Gerard sábado, 13 de mayo de 2017 8:17
Todas las respuestas
-
Puedes nombrar a cada objeto mediante la colección Controls, por ejemplo:
Private Sub cmdCrearPictures_Click() Dim Palabras(3) As String Dim Index As Integer Palabras(0) = "Visual" Palabras(1) = "Basic" Palabras(2) = "6.0" For Index = 0 To UBound(Palabras) - 1 Dim CharIndex As Integer For CharIndex = 0 To Len(Palabras(Index)) - 1 Dim NewIndex As Integer NewIndex = Controls("Cuadri" & (Index + 1)).Count Load Controls("Cuadri" & (Index + 1))(NewIndex) With Controls("Cuadri" & (Index + 1))(NewIndex) .Left = Controls("Cuadri" & (Index + 1))(NewIndex - 1).Left + _ Controls("Cuadri" & (Index + 1))(0).Width + 16 .Visible = True End With Next Next End Sub
Tengo un array con tres (3) palabras (Visual, Basic, 6.0) y tres (3) objetos "seed" (Cuadri1, Cuadri2, Cuadri3)
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Sergio Gerard sábado, 13 de mayo de 2017 8:17
-