D'abord,il faut créer un projet DLL ACTIVEX.
Ensuite, vous devriez renommer la CLASS. C'est par elle que vous accédez aux fonctions, aux procédures, aux propriétés et aux évènements de la DLL. (Par exemple : CLASS_X)
Un détail important, la propriété Instancing de la CLASS doit être à 5 -MultiUse. Sinon, pas d'évènements dans le programme CLIENT.
Note : Dans le projet CLIENT, les propriétés de la DLL seront visibles dans l'explorateur d'objet de Visuel Basic. Vous pouvez écrire un petit texte qui explique chaque Fonctions, Procédures, Propriétés et Évènements de votre DLL. (MENU : Outils/Attributs de procédure)
Les propriétés sont simplement une façon de lire ou de Modifier les variables de la DLL. Elles fonctionnent un peu comme une fonction. En lecture, elles renvoient une valeur par leur nom. En écriture, elles reçoivent une valeur par un paramètre.
Alors pourquoi ne pas simplement déclarer les variables PUBLIC? Simplement pour choisir de ne permettre que l'écriture ou la lecture. En plus, elles permettent d'ajouter du code lorsqu'on y accède. Par exemple, si on veut qu'à la lecture d'une longueur, la valeur d'une variable soit automatiquement mise à jour.
Exemple :
' 'Lecture du contenu de la variable 'Valeur1' Public Property Get P_Valeur1 () As Integer P_Valeur1 = Valeur1 End Property 'Écriture dans la variable 'Valeur1' Public Property Let P_Valeur1 (ByVal NouvelleValeurAsInteger) Valeur1 = NouvelleValeur End Property
Les procédures et les fonctions fonctionnent de la même manière que dans un projetEXE STANDARD.Je ne vais donc pas entrer dans les détails à part qu'il faut les déclarer PUBLIC pour qu'elles soient accessibles dans l'application CLIENT.
Enfin,nous arrivons aux évènements.
D'abord, il faut les déclarer dans l'entête de notre CLASS :
EVENT nomEvenement( [Paramètres])
Ensuite,vos évènements n'arriveront jamais si vous ne les déclenchez pas. Le déclenchement se fait dans une procédure, une fonction ou une propriété. L'instruction est simple :
RaiseEvent nomEvenement([Paramètres] )
' '********************************EXEMPLE****************************** EVENT FinDeBoucle(ByValVariable as string) PUBLICSUBPARCOURIR () DO 'INSTRUCTIONS LOOP UNTIL'CONDITION' 'C'est la que l'évènement est déclenché RaiseEvent FinDeBoucle END SUB '**************************************************************
D'abord,vous devez permettre au programme CLIENT de communiquer avec la DLL :
Allez dans le menu :Projet/Références, et ajoutez votre DLL (cochez)
Exemple :
' Private Sub Form_Load() 'Définir le lien avec la DLL Set lien =New CLASS_X End Sub
Les propriétés d'une DLL sont disponibles en lecture, en écriture ou les deux. Elles sont utilisables comme n'importe quelle autre propriété. Comme, par exemple, la propriété Caption d'une Étiquette (Label).
Pour lire une propriété :
Variable = lien.Propriete_X
Pour écrire dans unepropriété :
lien.Propriete_X =Variable
Les procédures et les fonctions fonctionnent de la même manière que dans un projet EXE STANDARD.
lien.Procedure_X ([Paramètres])
Les évènements fonctionnent de la même que ceux de n'importe quel objet standard. Après la définition de votre variable lien (voir page 4), il suffit de sélectionner votre variable de liaison dans la LISTE D'OBJET.La liste de vos évènements sera alors affichée dans la LISTE D'ÉVÈNEMENT.
' Event CalculeTermine() Event ResultatOverflow() Dim Valeur1 As Integer Dim Valeur2 As Integer Dim Resultat As Integer 'Valeur1+ Valeur2 -> Resultat Public Sub Additionner() 'Vérifier si le résultat est trop grand pour une variable INTEGER If (Valeur1 + Valeur2) > 5000 Then RaiseEvent ResultatOverflow 'Provéquer l'évènement ResultatOverflow Exit Sub 'Quitter la procédure End If 'Faire le calcul Resultat = Valeur1 + Valeur2 'Provoquer l'événement CalculeTermine RaiseEvent CalculeTermine End Sub '_____________________________________________________ 'Lecture du contenu de la variable 'Valeur1' Public Property Get P_Valeur1() As Integer P_Valeur1= Valeur1 End Property 'Écriture dans la variable 'Valeur1' Public Property Let P_Valeur1(ByVal NouvelleValeurAsInteger) Valeur1 = NouvelleValeur End Property '_____________________________________________________ 'Lecture du contenu de la variable 'Valeur2' Public Property Get P_Valeur2() As Integer P_Valeur2 = Valeur2 End Property 'Écrituredans la variable 'Valeur2' Public Property Let P_Valeur2(ByVal NouvelleValeurAsInteger) Valeur2 = NouvelleValeur End Property '_____________________________________________________ 'Lecture du contenu de la variable 'Resultat' Public Property Get P_Resultat() As Integer P_Resultat = Resultat End Property
' Private WithEvents lien As CLASS_X Private Sub cmdCalculer_Click() 'Écrire la première valeur dans la DLL lien.P_Valeur1 = Val(txtValeur1.Text) 'Écrire la Deuxième valeur dans la DLL lien.P_Valeur2 = Val(txtValeur2.Text) 'Faire le calcul (Valeur1 + Valeur2 -> Resultat) lien.Additionner '*l'évènement lien_CalculeTermine est provoqué par la DLL à la fin du calcul End Sub Private Sub Form_Load() 'Définir le lien avec la DLL Set lien = New CLASS_X End Sub Private Sub lien_CalculeTermine() 'Aficher le résultat MsgBox lien.P_Resultat End Sub Private Sub lien_ResultatOverflow() 'Le résultat est limité à 5000 (Choix arbitraire) MsgBox "Résultat plus Grand que 5000." End Sub