22/01/2005, 10:58
|
| Colaborador | | Fecha de Ingreso: diciembre-2003 Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 21 años Puntos: 53 | |
¿Cómo crear controles en tiempo de ejecución? Pregunta:
La pregunta es la siguiente: No sabemos como crear textbox y
listbox (o algo semejante para almacenar texto) en tiempo de ejecución (objeto)
sin que tenga límite en cuanto al número de objetos, es decir, en
este caso de textbox y listbox que se puedan crear. Respuesta:Para crear controles en tiempo de ejecución, con el VB6 hay otras posibilidades, debes tener esos controles en un array, como mínimo deberás tener uno, a partir de ahí, simplemente usando LOAD nombreControl(numeroDeElemento), tendrás nuevos controles.
Un ejemplo:
Crea un nuevo proyecto, añade un label y un textbox.
Selecciona el label, en la propiedad Index, escribe CERO, de esta forma tendrás un array creado.
Haz lo mismo con el TextBox.
Ahora escribe esto en el evento Load de formulario, se crearán nuevos controles.
Es importante notar que los nuevos controles creados tienen la propiedad Visible a FALSE, por tanto no serán visibles salvo que se cambie el estado a TRUE. Veamos el código de ejemplo que permitirá crear controles, posicionarlos debajo de los anteriores y si se pulsa en el botón cmdElimir, eliminará el último que se haya creado...
Código:
'
'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 Form_Load()
'Por defecto creamos un control de cada array:
'un Label y un Textbox
cmdCrear_Click
End Sub
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
Última edición por GeoAvila; 18/11/2005 a las 13:54 |