El Objeto Collection.


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.

No hay comentarios:

Publicar un comentario