Comment utiliser mes Active X
Petit point sur l'enregistrement des Active-X
Comprendre les messages d'erreurs
Contenu des fichiers ZIP
tous les active-X que je propose sont inclus dans un fichier ZIP contenant :
un répertoire Sources et un répertoire
Release
Aucun message d'erreur ne devrait apparaître si vous suivez les recommandations
de cette page
Le répertoire Sources contient :
un projet contenant l'active X seul
un projet qui utilise ce projet (et non l'active X cf. parenthèse
technique)
ces deux projets sont associés dans un groupe de projet nommé
__TEST.VBG
Pour éviter d'avoir un message d'erreur il faut toujours lancer __TEST.VBG
L'erreur qui se produit lorsqu'on lance _Demo.vbp est normale, ce projet ne
peut pas fonctionner seul (cf. parenthèse technique)
Le répertoire Release contient :
L'activeX compilé
un projet qui utilise l'active X compilé
Un exécutable de ce projet
Il est possible d'ouvrir le projet ou de lancer l'exe sans obtenir d'erreur
Des problèmes apparaîtrons si on les déplace (cf. parenthèse
technique)
Les fichiers OCX doivent être enregistrés dans la base de registre
pour que les programme qui les utilisent fonctionne,
y compris les projets VB exécutés depuis l'éditeur (sauf
dans le cas de groupe de projet particulier)
Ceci peut être fait manuellement ou automatiquement
:
Inscription manuel d'un OCX :
Faites démarrer exécuter...
taper Regsvr32 puis le nom et le chemin complet de l'OCX (ou drag & drop
du fichier OCX dans la fenêtre exécuter)
on obtient ce genre de message :
(Pour facilité cette opération je conseille vivement d'installer ce REG qui permet d'obtenir ENREGISTRE dans le menu contextuel de l'explorateur)
Inscription Automatique d'un OCX :
L'inscription ce fait automatiqement (si elle n'a pas déjà eu
lieu) lorsque
VB compile et créer le fichier OCX
VB ouvre un projet utilisant un OCX qui se trouve dans le même répertoire
(ouvrez _Demo.vbp du répertoire Release pour le vérifier)
On exécute un programme utilisant un OCX qui se trouve dans le même
répertoire (Lancez l'exe du répertoire Release pour le vérifier)
On exécute un programme utilisant un OCX qui se trouve dans le répertoire
system de windows (windows\system ou \system32)
A la suite d'un enregistrement il n'est plus possible de déplacer l'OCX
les programmes ne vont plus marcher car la référence contenu dans
la base de registre n'est plus valide
si on édite le fichier _Demo.vbp du répertoire Sources la référence
à l'active X ce fait par le biais du projet le contenant, on trouve donc
une ligne du style :
Object=*\A_anybutton.vbp
Le groupe de projet __TEST.VBG peut donc fonctionner sans que l'OCX ne soit
enregistré dans la base de registre
Par contre le fichier _Demo.vbp du répertoire Release contient une référence
directe à l'active X la ligne est alors de ce style :
Object={4A36BBCD-6463-11D4-889B-00105AB0D2BD}#1.0#0; AnyBouton.ocx
Le projet _Demo.vbp ne peut marcher que si l'OCX est enregistré dans
la base de registre
(ce qui ce fera automatiquement si ce n'est déjà fait à
l'ouverture)
Autre problème :
si vous lancer l'exe du répertoire Release avant d'ouvrir le groupe de
projet __TEST.VBG
L'éditeur VB trouvant une référence à l'OCX utilisé
voudra changer la référence contenu dans le projet _Demo.vbp :
la ligne
Object=*\A_anybutton.vbp
sera automatiquement remplacé par
Object={4A36BBCD-6463-11D4-889B-00105AB0D2BD}#1.0#0; AnyBouton.ocx
se qui peut poser des problèmes si l'on souhaite modifier l'OCX par la
suite
Résolution des message d'erreur survenant à l'ouverture d'un projet
Impossible de charger .... .ocx continuer a charger le projet
?
Erreur lors du chargement consultez ...... .log pour plus de détails
Impossible de créer cette référence .....
le composant ... ou une de ces dépendances n'est pas correctement
enregistré : un fichier est absent ou incorrect
Impossible de charger .... .ocx continuer a charger le projet ?
Ce message apparaît lorsqu'un OCX référence dans le projet
(le .VBP) est introuvable
si une feuille utilise l'OCX en question un autre message apparaît
Erreur lors du chargement consultez ...... .log pour plus de détails
Attention : dans la feuille tout les composants introuvable seront
remplacés par des PictureBox (en mémoire pour l'instant)
il ne faut surtout pas enregistrer les changements en sortant sinon les composant
deviendront des PictureBox dans la feuille (le .FRM)
et elle deviendra définitivement inutilisable !
Solution :
1) Quitter l'éditeur sans rien enregistrer, enregistrer
l'OCX et ré ouvrir le projet
ou
2) Ajouter la référence à l'OCX au projet dans le menu
"projet" "composant", quitter l'éditeur en enregistrant
uniquement le VBP et ré ouvrir le projet
(il est peut être nécessaire de compiler cet OCX s'il n'existe
plus que les sources)
Impossible de créer cette référence .....
Le projet qui vient de s'ouvrir utilise un autre projet
Attention les composants manquant vont tous être remplacés par
des PictureBox (ne pas enregistrer les feuilles)
Solution :
Quittez le projet sans rien enregistrer et ouvrez le groupe de projet ( un .VBG
) regroupant ce projet et l'autre
ou
Ajouter une référence compatible dans le menu "projet"
"référence", quitter l'éditeur en enregistrant
uniquement le VBP et ré ouvrir le projet
le composant ... ou une de ces dépendances n'est pas correctement enregistré : un fichier est absent ou incorrect
Un message qui apparaît lors du lancement d'une application qui utilise un composant ActiveX non enregistré
Encore une fois il faut enregistrer l'OCX
pour que l'exe fonctionne correctement