Sección de tutoriales y manuales vb
El siguiente ejemplo muestra como crear un evento en una Dll Activex para poder de esta manera interceptar dicho evento desde el programa o Formulario que ejecuta la Dll
El mismo es muy simple y consiste en una función que suma dos números. Dentro de la dll se crea un evento llamado Error, si se produce un error en la función, es decir dentro de la dll, se lanza el mismo y se intercepta desde el formulario.
Iniciar un nuevo Proyecto de tipo Exe estándar. Ahora desde el menú Archivo, seleccionar la opción Agregar Proyecto. En la ventana seleccionar Proyecto de tipo dll Activex. De esta forma tendremos dos proyectos.
En el proyecto de tipo Dll, seleccionar el módulo de clase que por defecto llamado Class1, y cambiarle el nombre por DllPrueba. En la ventana de explorador de proyectos de visual basic quedará de la siguiente manera:
Ahora abrir la ventana de código del módulo de clase para definir y escribir el código, que tendrá la función llamada Sumar, y la declaración del evento:
Pegar lo siguiente en el módulo de clase:
' Evento que se ejecutará al producirse un error _ dentro del la función Sumar Public Event Error(Descripcion As String, NumeroError As Long) 'Función Pública Function Sumar(Num1 As Variant, Num2 As Variant) As Long On Error GoTo ErrSub 'Devuelve el valor de la suma Sumar = Num1 + Num2 Exit Function ErrSub: 'Lanza el evento de la dll, pasándole los parámetros RaiseEvent Error(Err.Description, Err.Number) End Function
En la primer línea del código anterior, se declara el evento llamado Error y se le crean dos parámetros, uno para la descripción del error, y otro para el número del mismo.
Si se produce un error dentro de la función Sumar, se pasará a ejecutar lo que esté en la etiqueta de error errSub, y como se ve en el código, se lanza o dispara el evento Error, con la instrucción RaiseEvent.
Ahora guardar todos los proyectos en una carpeta. Al tener dos proyectos se creará también un grupo de proyectos, por defecto llamado Grupo1.vbg
El paso siguiente será agregar en el formulario del proyecto de tipo Exe, dos controles Textbox y un Command1. El text1 será para ingresar el primer número que se le pasará a la función Sumar, y el Text2 para el otro número. El Command1 ejecuta o llama la función Sumar.
En el formulario quedará algo así:
El siguiente paso será incluir en el Proyecto Exe, la referencia a la la Dll para poder utilizarla y probarla. Entonces, desde el menú Referencias, buscar el nombre Proyecto2 y marcarlo
l
Lo siguiente será, ( siempre desde el proyecto Exe ) , crear una variable de Objeto, en la sección de declaraciones, que sea de tipo DllPrueba, y automáticamente visual basic al escribir "As", mostrará en la lista de tipos el nombre del módulo de clase DllPrueba.
Pero para poder utilizar el evento Error que se había declarado en el módulo de clase, notar que hay que utilizar la palabra o instrucción WithEvents. Al crear la variable de objeto "Prueba" de esta forma, la misma podrá recibir eventos. y una ves declarada, podrás ver en la sección de la ventana de código, en el combo izquierdo donde está la lista de objetos y controles del formulario, que ahora aparece el objeto Prueba
y si lo seleccionas, podrás ver en el otro combo, como aparece la lista de eventos declarados en la Dll, en este caso solo aparecerá uno solo obviamente, el evento Error.
Colocar como se dijo, un Text1, un Text2 y un Command1. El código para ejecutar la suma, llamando al método Sumar, sería el siguiente:
Option Explicit Private WithEvents Prueba As DllPrueba Private Sub Command1_Click() Dim Resultado As Long ' Llama a la función de la Dll pasándole los valores Resultado = Prueba.Sumar(text1, Text2) Me.Caption = Resultado End Sub 'Esto es para crear la instancia de la Dll Private Sub Form_Load() Set Prueba = New DllPrueba End Sub
Y el código a colocar dentro del procedimiento del Evento Error en el Form1, será unos simples MsgBox para mostrar los valores de los parámetros
Private Sub Prueba_Error(Descripcion As String, NumeroError As Long) 'Muestra el valor del parámetro Descripcion MsgBox "Descripción del Error:" & Descripcion, vbCritical 'Muestra el valor del parámetro NumeroError MsgBox " Número de Error: " & NumeroError, vbCritical End Sub
Ahora se puede probar el Proyecto. Si ingresas valores numéricos en los textBox, no ocurrirá nada, solo ejecutará la función Sumar y podrás ver el resultado. Pero si pasas un valor que no sea numérico, por ejemplo:
Call Prueba.Sumar (345, "Hola")
...podrás ver que se dispara el evento Error y muestra el valor recibido de los parámetros del procedimiento de evento.
Nota: Por último, el evento declarado en la dll, en este caso, obviamente debe estar declarado como Público para poder accederlo desde fuera. Osea , esto sería incorrecto:
Private Event Error(Descripcion As String, NumeroError As Long)
En este enlace está el proyecto para descargar
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar