Un Módulo de Clase es un tipo de código-módulo Visual Basic, su extensión es .cls
y es similar a un módulo standard en cuanto a que contiene funcionalidad que puede ser utilizada por otros módulos dentro de la aplicación. La diferencia principal es que un módulo de clase provee la funcionalidad en la forma de un objeto, cada módulo de clase define un tipo de objeto, por lo que puede existir más de un módulo de clase en una aplicación.
Para utilizar un módulo de clase en la aplicación, es necesario crear una instancia de la clase, para acceder a las propiedades, métodos y eventos del objeto definido en la clase.
Dim miCasa As Casa 'declaracion de la variable tipo Casa
Set miCasa = New Casa 'instancia
Es posible crear un módulo de clase y agregar métodos, propiedades y eventos manualmente:
Dim empleado As Persona
Set empleado = New Persona
empleado.edad = 33
empleado.estado = True
empleado.nombre = "Gerardo"
También es posible utilizar el Class Builder Add-In para automatizar el proceso de agregar métodos, propiedades y eventos a una clase.
Si se definen las variables como Private
sólo son visibles para el módulo de clase en sí.
Es posible crear propiedades por default para un objeto, estas propiedades son las que se establecen si el usuario no provee el valor de la propiedad cuando trabaja con el objeto.
Para crear un método, se crea un procedimiento o función dentro del módulo de clase:
Public Function nombre_Funcion(parámetros) As tipoDato
'instrucciones
nombre_Funcion = valorRegreso
End Function
Para crear un evento se siguen dos pasos:
- Declarar el evento en la sección de declaraciones generales (General Declarations) de un módulo de clase.
Public Event nombre_Evento(parametros)
- Levantar el evento, es decir, cuando se desea que el evento ocurra se utiliza la sentencia
RaiseEvent
y pasar el nombre del evento y cualquier argumento que el evento utilice.Public Sub nombreMetodo()
RaiseEvent nombre_Evento(argumentos)
End Sub
Es posible disparar mensajes de error al crear módulos de clase, para ello se utiliza el método Raise
del objeto Err
:
ERR.Raise Numero, fuente, descripción, archivoAyuda, contextoAyuda
Una vez que se termina de trabajar con la clase es conveniente liberar los recursos que la clase utilizo a través del empleo de la sentencia Nothing
:
Set nombreIntanciaClase = Nothing
Seleccione del menú principal:
- Add-Ins » Add-In Manager
- VB 6 Class Builder Utility
- Load Behavior » Loaded/Unloaded
Una vez cargado Class Builder, seleccione de nuevo del menú principal:
- Add-Ins » Class Builder
La accion anterior abre la ventana Class Builder donde es posible definir las propiedades, métodos y eventos de la clase.
Los módulos de clase tienen dos eventos built-in:
Initialize
, ocurre cuando una instancia de una clase es creada pero antes de la inicialización de cualquier propiedad. Utilice este evento para inicializar culquier dato utilizado por la clase.Terminate
, ocurre cuando la variable objeto está fuera del ámbito o se establece con el valor Nothing. Utilice este evento para almacenar información, descargar formas o realizar tareas que deban ocurrir cuando la clase termina.
Para indicar que una propiedad es la propiedad por default estando activa la ventana de Clase se puede hacer a través del Class Builder o seleccionar del menú principal:
- Tools » Procedure Attributes » Advanced
- Seleccionar la propiedad a establecer como propiedad por default
- Seleccionar de la lista Procedure ID el valor (Default)
Por ejemplo es posible crear un módulo de clase el cual es un objeto de fuente de datos:
- Seleccionar del menú principal Project » Add Class Module
- Cambiar el nombre del módulo de clase por un nombre descriptivo
- Cambiar la propiedad
DataSourceBehavior
al valor1 - vbDataSource
- Seleccionar del menú principal Project » References
- Seleccionar Microsoft ActiveX Data Objects 2.0 Library
- En la sección General Declarations del módulo de clase definir:
- Una variable tipo
Connection
- Una variable tipo
Recordset
Option Explicit
Private cnProducts As Connection
Private rsProducts As Recordset
- Una variable tipo
- Escribir el siguiente código para el evento
Initialize
:Private Sub Class_Initialize()
Set cnProducts = New Connection
Set rsProducts = New Recordset
cnProducts.Provider = "Microsoft.Jet.OLEDB.4.0"
cnProducts.Open "Data Source=NWIND.MDB"
rsProducts.Open "SELECT * FROM Products", cnProducts, adOpenStatic
End Sub
- Escribir el siguiente código para el evento
GetDataMemeber
:Private Sub Class_GetDataMember(DataMember As String, Data As Object)
Set Data = rsProducts
End Sub
- Método para moverse al registro siguiente:
Sub registroSiguiente()
rsProducts.MoveNext
End Sub
- Método para moverse al registro anterior:
Sub registroAnterior()
rsProducts.MovePrevious
End Sub
- Agregar a la forma un TextBox y un CommandButton (
txtProduct
,cmdObtenerDatos
) - Seleccionar del menún principal Project » References
- Seleccionar Microsoft ActiveX Data Binding Collection
- En la sección General Declarations de la forma definir:
- Una variable del tipo de la clase creada
CProducts
- Una variable tipo
BindingCollection
Option Explicit
Dim clProducts As CProducts
Dim bcProducts As BindingCollection
- Una variable del tipo de la clase creada
- Agregar el siguiente código para el botón
cmdObtenerDatos
:Private Sub cmdObtenerDatos_Click()
Set clProducts = New CProducts
Set bcProducts = New BindingCollection
Set bcProducts.DataSource = clProducts
bcProducts.Add txtProduct, "Text", "ProductName"
bcProducts.Add frmProducts, "Caption", "ProductID"
End Sub
- Agregar a la forma dos CommandButton (
cmdRegistroSiguiente
,cmdRegistroanterior
):- Para el código del boton
cmdRegistroAnterior
escribir:Private Sub cmdRegistroAnterior_Click()
clProducts.RegistroAnterior
End Sub
- Para el código del boton
cmdRegistroSiguiente
escribir:Private Sub cmdRegistroSiguiente_Click()
clProducts.RegistroSiguiente
End Sub
- Para el código del boton
--- Agregar la funcionalidad de la clase (métodos) ---
0 comentarios:
Publicar un comentario