crear controles en tiempo de ejecucion

18/12/2007 - 17:56 por daniel | Informe spam
Hola a todos
como se puede crear y eliminar controles en tiempo de ejecucion.
e probado esto pero no funciona como se podria hacer para tambien otro tipo
de controles ejml(WebBrowser,WindowsMediaPlayer1.)
'Ejemplo de creación de controles en tiempo de ejecución
Option Explicit
'Llevará la cuenta de los controles creados
Private numControles As Long
Private Sub cmdCrear_Click()
'Crear un nuevo control de cada tipo
'numControles está declarada a nivel de módulo
numControles = numControles + 1
'Crear los controles
Load Label1(numControles)
Load Text1(numControles)
'Posicionarlos y hacerlos visibles
With Label1(numControles)
.Visible = True
.Top = Label1(numControles - 1).Top + .Height + 120
.Caption = "Label1(" & numControles & ")"
End With
With Text1(numControles)
.Visible = True
.Top = Text1(numControles - 1).Top + .Height + 60
.Text = "Text1(" & numControles & ")"
End With
End Sub
Private Sub cmdEliminar_Click()
'Eliminar un elemento de cada control anteriormente creado
'El control CERO no se puede eliminar
If numControles > 0 Then
'Descargarlos de la memoria
Unload Label1(numControles)
Unload Text1(numControles)
numControles = numControles - 1
End If
End Sub


Private Sub userform_activate()
'Por defecto creamos un control de cada array:
'un Label y un Textbox

cmdCrear_Click
End Sub

un saludo a todos y muchas gracias
Daniel
 

Leer las respuestas

#1 Ivan
19/12/2007 - 04:05 | Informe spam
hola Daniel,


como se puede crear y eliminar controles en tiempo de ejecucion.







a lo mejor estoy equivocado, pero me da la impresion de que estas
intentando crear controles a partir de un array de controles. Si es
asi, y de nuevo si no me equivoco, VBA no admite los arrays de
controles, pero podrias usar el metodo add de la coleccion Controls
del userform

si quieres prueba este ejemplo:

inserta un userform y pon esto en su modulo

Sub CrearTextbox()
Dim n As Integer, m As Integer, t As Byte
For n = 1 To 3
For m = 1 To 3: t = t + 1
With Me.Controls.Add("Forms.TextBox.1")
.Name = "Text" & n: .Text = t
.Top = (n - 1) * 25: .Height = 25
.Left = (m - 1) * 25: .Width = 25
End With
Next
Next
End Sub
Private Sub UserForm_Initialize()
CrearTextbox
End Sub

y para eliminarlos en ejecucion echale un ojo al metodo renove.

solo por darte una idea

un saludo
Ivan

Preguntas similares