Resumen Como crear una DLL

COMPONENTES

Funcionarán en W95 y NT, ya que necesitan un CLASS.ID que está en el registro de Windows.

Cuando arranco Visual Basic 5.0 nos pregunta sobre el tipo de proyecto. Para crear una librería de componentes:

   1.ACTIVEX.EXE

   2.ACTIVEX.DLL

   1.Cuando se levanta un componente .EXE se levanta en un área de memoria distinta a la de la aplicación.

   2.Cuando se levanta un componente .DLL se levanta en el área de memoria de la aplicación. La ventaja de este tipo de
     componente respecto al .EXE es que éste es más rápido, pero tiene la pega de que si se cae el componente, se cae la
     aplicación.



     El componente no tendrá formularios. Sólo tendrá código.

     En una DLL o en un EXE tendré uno o más objetos, cada uno en un módulo de clase.

     La propiedad instancing nos dice cómo lo vamos a instanciar:

   1.Privada: Nadie, fuera de esta aplicación, podrá instanciar un objeto (no se puede acceder).

   2.PublicNotCreatable: No se puede instanciar. Sí acceder.

   3.SingleUse, MultiUse: Se puede instanciar. Con SingleUse tendremos una instancia, y con MultiUse tendremos varias.

   4.GlobalSingleUse, GlobalMultiUse: Como en 3, pero las funciones se tratarán como funciones globales, para usarlos
     dentro de cada aplicación.

     Con estas maneras de instanciar tendremos una jerarquía de componentes.



DEFINICIÓN DE UN OBJETO

Propiedad: Una propiedad es una variable pública. Se declaran como siempre:

                                      Public Nombre As String

Nombre del objeto: Es el nombre del módulo de clase.

Nombre del EXE o DLL: Es el nombre del proyecto.



Para probar una DLL, abrimos un proyecto estándar, lo veo en Project | References.

Para probar un EXE, abro una nueva instancia de VB con un proyecto estándar y en Project | References.

La DLL la puedo ver con el Object Browser, una vez incluida en el proyecto, mediante Project | References.



INSTANCIAR UN OBJETO

Reservo memoria: Dim As

Doy valores por defecto: Dim As New

                                                       ó

Set = New

Puedo igualar objetos: Set =

El valor NULL es la palabra reservada Nothing.

Vuelvo a las propiedades iniciales (a 0 los números, a "" las cadenas, ...):

                                   Set = Nothing

Cuando deje de usar un objeto: Set = Nothing



EVENTO CLASS_INITIALIZE

Ocurre al inicializar el objeto.



EVENTO CLASS_TERMINATE

Ocurre cuando se hace Nothing



PROPIEDADES

Para asignar y consultar valores de las propiedades:

Public Property Get As ............

................

End Property

Public Property Let ()

................

End Property



Esto se puede hacer a mano, escribiendo los procedimientos, o usando el asistente:

                                       Tools | Add Procedure

Con este asistente doy el nombre del procedimiento y le digo ?Property.

Ejemplo: Validar que la fecha sea menor que hoy.

If valFechaCaducidad < Now() Then

Err.Raise 1 + vbObjectError, , "La fecha está mal"

Else

varFechaCaducidad = ...................

End If



Objeto Err:

.source

.description

.clear

.raise Para forzar un error. Como nº uso 1+vbObjectError, para no usar un nº

               de error de VB. cte.

               Err.Raise 1 + vbObjectError, , "La fecha está mal"

               Number Source Description



EVENTOS

Lo primero que tengo que hacer es declarar el evento:

                                 Public Event ()



El contenido del evento lo pondrá el programador del objeto.



Cuando quiero que se vaya a dar el evento, lo pongo con Raise Event:

                                     RaiseEvent ()



Para declarar el objeto para usar eventos tengo que hacerlo como sigue:

                              Dim WithEvents As

y en el Load del formulario:

                                 Set = New



GENERAR LA DLL O EL EXE

Grabo el proyecto y hago un make de la DLL.

NOTA: Los componentes han de copiarse y registrarse. Cada objeto tiene un identificador único que se llama CLASE.ID y
se genera al hacer el ejecutable del proyecto.





COMO SE REGISTRA UN COMPONENTE

Usando REGSVR32.EXE.

Lo podemos encontrar en C:\WINDOWS\SYSTEM en Windows 95, o en C:\WINNT\SYSTEM32 en Windows NT.



                                Para registrar: REGSVR32

                             Para desregistrar: REGSVR32 [/u]

El ha de ir entre comillas, si en dicho nombre existen espacios en blanco.

El incluye el path.

Cuando se usa una dll sin registrar sale el error 439.

Si modifico un componente tendré que desregistrar el antiguo, registrar el nuevo y volver a compilar el proyecto. O esto, o lo
siguiente:

Project | Properties | Component

   1.Binary Compatibility: Para respetar las propiedades, métodos, ..., elegiré esta opción, y así puedo modificar el
     código y me respeta el CLASS.ID. Si ni se puede usar esta opción saltará un error.

   2.Project Compatibility: Para crear nuevas propiedades.

   3.No Compatibility: Si, por ejemplo, quiero borrar una propiedad, o renombrarla. Esta opción creará un nuevo
     componente, y una nueva entrada en el Registro.

     Este tipo de aplicaciones se llaman aplicaciones servidoras de componentes Active X.



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com