Visual Basic - Añadir controles en tiempo de ejecución

Life is soft - evento anual de software empresarial
 
Vista:

Añadir controles en tiempo de ejecución

Publicado por Westmad (120 intervenciones) el 02/04/2003 17:06:02
Estoy tratando de añadir varios image, pero en tiempo de ejecución.
La cantidad de imaga a añadir variará entre 0 y X.
Yo lo hago de la siguiente manera, pero el problema es de esta forma solo me deja añadir uno, porqué cuando añado el siguiente me dice que ya existe ese nombre:

Dim WithEvents objeto As Image
---------------
Dim a As Byte
Dim izq As Integer
Dim alt As Integer
izq = 180
alt = 390

a = 0
While a < 1
Set objeto = Form1.Controls.Add("VB.Image", "ima")
With objeto(a)
.Appearance = 0
.BorderStyle = 1
.Height = 80
.Width = 70
.Left = izq
.Top = alt
.Stretch = True
.Picture = LoadPicture(ruta & "\" & File1.List(a))
.Visible = True
End With
izq = izq + 80
a = a + 1
Wend

Por favor, a ver si me podeís echar una mano. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Añadir controles en tiempo de ejecución

Publicado por J2ML (464 intervenciones) el 02/04/2003 18:25:26
Veamos
1.- Es debido a esta línea:
Set objeto = Form1.Controls.Add("VB.Image", "ima") ima es el nombre que le estas asignando a ese nuevo control, claro la primera vez lo hace bien pero la segunda vez ya existe un control que posee ese nombre...! aunque emplees With objeto(a) el objeto incial no fue declarado como un arreglo..! (por cierto la línea While a < 1 debe ser WHile a < X supongo).
2.-Yo te recomendaría colocar en tiempo de diseño un objeto imagen llamado ima con un index = 0 Visible= false Appearance = 0
BorderStyle = 1 Height = 80 Width = 70 Left = izq Top = 390
Luego tu código quedaría

algo así:
Dim a As Byte
Dim izq As Integer
Dim alt As Integer
izq = 180
alt = 390

a = 1
While a < X
Load ima(a)
With ima(a)
.Picture = LoadPicture(ruta & "\" & File1.List(a))
.Visible = True
'Todas las demás propiedades fueron asumidas de ima(0)
End With
izq = izq + 80
a = a + 1
Wend
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Añadir controles en tiempo de ejecución

Publicado por Westmad (120 intervenciones) el 02/04/2003 19:03:46
y como hago para eliminarlos posteriormente.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Controles en tiempo de ejecución

Publicado por J2ML (464 intervenciones) el 03/04/2003 16:00:32
Si empleas el método de colocar el control con el índice cero en tiempo de diseño y luego el método load, para eliminarlos sólo debes colocar unload Objeto(indice). Pero ojo sólo podrás descargar (eliminar) objetos que hayas creado en tiempo de ejecución. (Es decir el elemento cero no podrás eliminarlo)....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muchas gracias.

Publicado por Westmad (120 intervenciones) el 03/04/2003 16:59:55
Muchas gracias tu ayuda porque no era capaz de encontrar la solución.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar