El objeto Collection permite almacenar objetos en sí, es algo así como un array de objetos.
Tiene dos métodos y dos propiedades:
El método Add permite agregar elementos a la colección y el método Remove permite quitar los elementos.
La propiedad Count es una propiedad de solo lectura e indica el número de elementos que contiene la colección y la propiedad Item con el argumento index permite acceder al objeto almacenado con ese índice.
Nota: a diferencia de los arrays los elementos (Items) de una colección comienzan a numerarse por 1.
Para crear una colección primero se declara una variable de tipo Collection, por ejemplo:
Private Sub nVariable as Collection
Luego se crea efectivamente la colección con la sentencia:
Set nVariable=New Collection
A partir de aquí se puede comenzar a utilizar la colección almacenando objetos, quitándolos y todo lo que se desee hacer con ella.
Supóngase creado un objeto de nombre miObjeto y un objeto Collection de nombre miColeccion. Se puede agregar a la colección el objeto miObjeto con la siguiente sentencia:
miColeccion.Add miObjeto
Para recuperar un objeto de la colección con índice 2, por ejemplo, se almacena este elemento de la colección en una variable de objeto; si se utilizan el objeto y la colección declaradas anteriormente:
miObjeto=miColeccion.Item(2)
Ejemplo
Crea un nuevo proyecto estándar e introduce un nuevo módulo de clase de nombre cFicha. Escribe en la ventana de código del módulo lo siguiente:
Option Explicit
Dim apell as String, nomb as String, nacim as Date
Public Property Get nombre() as String
nombre=nomb
End Property
Public Property Let nombre (ByVal vName as String)
nomb=vName
End Property
Public Property Get apellido() as String
apellido=apell
End Property
Public Property Let apellido(ByVal vApel as String)
apell=vApel
End Property
Public Property Get nacimiento() as Date
nacimiento=nacim
End Property
Public Property Let nacimiento (ByVal vFech as Date)
nacim=vFech
End Property
Public Property Get edad()as Integer
edad=Cint(Date-nacim)
End Property
Coloca en el formulario los siguientes controles:
Control |
Propiedad |
Valor |
Form |
Name |
frmColec |
" " |
Caption |
Fichas |
TextBox |
Name |
txtNomb |
" " |
Text |
|
TextBox |
Name |
txtApel |
" " |
Text |
|
TextBox |
Name |
txtFnac |
" " |
Text |
|
CommandButton |
Name |
cmdAdd |
" " |
Caption |
&Agregar Ficha |
CommandButton |
Name |
cmdRemove |
" " |
Caption |
&Quitar Ficha |
Label |
Name |
lblNomb |
" " |
Caption |
|
Label |
Name |
lblEdad |
" " |
Caption |
|
Label |
Name |
lblNfich |
" " |
Caption |
0 Fichas |
Scroll Bar |
Name |
hsbFich |
" " |
Min |
1 |
" " |
Max |
1 |
" " |
Visible |
False |
Escribe el siguiente código en la ventana de código del formulario:
Option Explicit
Dim Fichas as Collection, Ficha as cFicha
Private Sub Form_Load()
Set Fichas=New Collection
End Sub
Private Sub cmdAdd_Click()
Set Ficha=New cFicha
Ficha.nombre=txtNomb.Text:Ficha.apellido=txtApel.Text
Ficha.nacimiento=txtFnac.Text
Fichas.Add Ficha:Set Ficha=Nothing
If Fichas.Count<2 Then
hsbFich.Visible=True
Else:hsbFich.Max=Fichas.Count
End If lblNfich.Caption=Fichas.Count &" Fichas"
End Sub
Private Sub cmdRemove_Click()
Fichas.Remove hsbFich.Value:hsbFichas.Max=Fichas.Count
If Fichas.Count=0 Then
hsbFich.Visible=False
End If
lblNfich.Caption=Fichas.Count &" Fichas"
Call hsbFich_Change
End Sub
Private Sub hsbFich_Change()
Set Ficha=Fichas.Item(hsbFich.Value)
lblEdad.Caption=Ficha.nacimiento &" tiene "& Ficha.Edad &" años"
lblNomb.Caption=Ficha.nombre &" "& Ficha.apellido
Set Ficha=Nothing
End Sub
Pulse F5 para probar la aplicación.