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