6.6.Construction d'un contrôle ActiveX
sous Visual Basic 6.0



Plan du chapitre:

Introduction

1. Utilisation de l'expert de création d'ActiveX de VB
 

1.1 Création d'un projet-contrôle ActiveX
1.2 Ajout d'un projet de test du contrôle
1.3 Formation du contrôle "CDJoueur"
1.4 Ajout d'une nouvelle propriété
1.5 Ajout de méthodes
1.6 Ajout et déclenchement d'évènements
1.7 Implémentation des gestionnaires d'évènements des contrôles agrégés
1.8 Gestion des étapes de la vie du contrôle
1.9 Création d'une page de propriété
1.10 Création du fichier .ocx



Introduction

Note : ceci n'est possible qu'avec l'édition professionnelle ou entreprise de Visual Basic. Ce chapitre est à utiliser avec votre logiciel VB ou bien à parcourir à titre d'information.

- anciennement appelés contrôles OLE.
- ajoutent une fonctionnalité interactive aux pages Web.
- peuvent être utilisés sous tout environnement de développement supportant ActiveX (Delphi, Visual C++, …) ainsi qu'avec   des applications telles que Microsoft Office.
 

1. Utilisation de l'expert de création d'ActiveX de VB

1.1 Création d'un projet-contrôle ActiveX
 

Visual Basic insère automatiquement dans le projet une fenêtre de conception :

On peut tout de suite fixer le nom du contrôle (propriété name) et le nom du projet (menu projet/propriétés/). On peut aussi enregistrer le projet et le fichier correspondant au contrôle, qui prendra l'extension .ctl (.ctx s'il contient des données binaires, comme des images bitmap). Le contrôle ne sera inséré dans un fichier .ocx que lorsqu'il sera compilé en code natif.
 
 

1.2 Ajout d'un projet de test du contrôle

Pour pouvoir tester le contrôle tout au long de sa conception, il faut se servir d'au moins un projet Exe Standard : on l'ajoute par la commande Fichier/Ajouter un projet/Exe Standard. Visual Basic crée alors automatiquement un groupe de projet (dont le fichier correspondant aura l'extension .vbg) :

Le projet s'affichant en gras est le projet de départ. Comme un projet Contrôle ActiveX ne peut être exécuté indépendamment, il faut changer cet ordre, par exemple en cliquant à droite sur le projet Exe Standard et en choisissant "Projet de démarrage" dans le menu contextuel.

Le contrôle ActiveX est déjà représenté dans la boîte à outils de VB avec une icône par défaut (l'icône d'un contrôle peut être changée en utilisant sa propriété ToolboxBitmap et en chargeant un fichier contenant une image de 15×16 pixels). L'icône est grisée (on ne peut déposer le contrôle sur une feuille) tant que la fenêtre de conception du contrôle est ouverte. Dès que l'on ferme cette fenêtre, le contrôle est utilisable dans le projet test.
 
 

1.3 Formation du contrôle "CDJoueur".

Il existe 3 façons de construire un contrôle ActiveX dans Visual Basic :
 

La fiche de conception s'utilise comme une feuille VB classique : on peut déposer successivement tous les composants puis utiliser la fenêtre de code pour réaliser l'implémentation du contrôle.

La fiche de conception se présentera ainsi :





1.4 Ajout d'une nouvelle propriété

Ceci se fait classiquement, comme dans un module de classe, à l'aide d'une variable privée au module et de procédures property get et property set.
 


 

1.5 Ajout de méthodes

Il suffit de rajouter des fonctions et/ou des procédures avec la clause public. Dans notre cas, il n'y aura que des procédures.
 
 

1.6 Ajout et déclenchement d'évènements
 


Note : mciExecute est une fonction de l'API Win32. Sa déclaration est la suivante :

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

 

1.7 Implémentation des gestionnaires d'évènements des contrôles agrégés

Il est nécessaire ici de traiter les gestionnaires de l'évènement Click des 3 boutons insérés :




1.8 Gestion des étapes de la vie du contrôle

Il faut savoir que lors de son utilisation, certains évènements ont immanquablement lieu :

tout d'abord, à la façon d'une classe, les évènements Initialize et Terminate ont lieu respectivement lors de la création et lors de la destruction d'une instance du contrôle, que ce soit une instance de conception ou une instance d'exécution.
 

  • 3 évènements ont trait à la mise en mémoire des valeurs des propriétés par le conteneur du contrôle (par exemple dans un fichier .frm) : InitProperties, ReadProperties et WriteProperties.
  • il est important de faire spécialement attention à 2 évènements classiques : Resize qui se produit une première fois quand on dépose le contrôle sur un conteneur, puis à chaque fois que le contrôle est redimensionné, et Paint, qui se produit à chaque fois que le contrôle doit être redessiné (il est notamment important dans le cas d'un contrôle créé ex nihilo).

  • Dans notre cas, nous traitons uniquement le redimensionnement du contrôle :




    1.9 Création d'une page de propriété

    Les pages de propriétés sont des boîtes de dialogues non modales s'affichant lorsqu'un utilisateur d'un composant clique sur l'item "Propriétés..." de son menu contextuel. Elles sont notamment utiles dans les environnements de développement n'ayant pas de fenêtre de propriétés (comme Visual C++), mais peuvent aussi servir dans le cas de relations complexes entre propriétés ou pour faciliter l'internationalisation en permettant une dénomination multilingue des propriétés.
     
     

    1.10 Création du fichier .ocx

    Il suffit de lancer la compilation par le menu Fichier/Créer nom_controle.ocx. Il faut noter que Visual Basic recense automatiquement le contrôle dans la base de registre de la machine locale : on peut donc tester immédiatement un contrôle dans une application cliente.

    Pour utiliser le contrôle sur une autre machine, il ne faudra pas oublier de l'inscrire dans le registre local (car c'est un objet COM) : cela peut se faire avec l'utilitaire standard de Microsoft, regsvr32.exe, ou par exemple avec celui de Borland, tregsvr.exe (livré avec Delphi) :
     
     
    pour le recenser, exécuter la commande : tregsvr nom_fichier.ocx 
    pour le dérecenser, exécuter la commande : tregsvr -u nom_fichier.ocx

    Note : nous n'avons créé ici qu'un seul contrôle, mais un fichier .ocx peut contenir plusieurs contrôles ActiveX.