Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PASSER DES PARAMÈTRES DE HTML/JAVASCRIPT VERS ACTIVEX (VB)


Information sur le tutorial

Catégorie :VBA Date de création : 18/08/2006 16:08:31 Vu : 11 239 fois

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Voilà un tutoriel expliquant un moyen de faire communiquer une page HTML/Javascript avec un Contrôle ActiveX

Tutorial

Tout d'abord le HTML :

<HTML>
<BODY>
<OBJECT name='ActiveX' classid="clsid:30DAB2BC-CC11-4DBE-804B-6661C9E8CD0C" Width='100px' Height='100px'>
<PARAM name='COLOR' Value='Nouvelle_Couleur'>
</OBJECT>
<script Language="Javascript1.3">
alert(ActiveX.Color);
</script>
</BODY>
</HTML>

La balise Object Instancie le contrôle ActiveX et la section Javascript montre que l'on peut bien accéder à la variable.
On essaye donc de faire passer la variable COLOR avec la valeur 'Nouvelle_couleur'

Ensuite Dans l'applet (VB) il faut :
Définir des variables pout stocker les valeurs :

Const m_def_Color = 0
Dim m_Color As Variant

m_def_Color stockera la valeur par défaut et l'autre la valeur entrée
Ensuite utiliser des fonctions pour récupérer et stocker les paramètres :


//Fonction permetant de Récupérer les paramètres
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    RaiseEvent ReadProperties(PropBag)
    m_Color = PropBag.ReadProperty("Color", m_def_Color)
End Sub

//fonction permetant de stocker les paramètres
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    RaiseEvent WriteProperties(PropBag)
    Call PropBag.WriteProperty("Color", m_Color, m_def_Color)
End Sub

'Fonction d'accessibilité sur la variable Color
'ATTENTION! NE SUPPRIMEZ PAS OU NE MODIFIEZ PAS LES LIGNES COMMENTÉES SUIVANTES!
'MemberInfo=14,0,0,0
Public Property Get Color() As Variant
    Color = m_Color
End Property

Public Property Let Color(ByVal New_Color As Variant)
    m_Color = New_Color
    PropertyChanged "Color"
End Property

'Initialiser les propriétés pour le contrôle utilisateur
Private Sub UserControl_InitProperties()
    m_Color = m_def_Color
End Sub

Voilà , C'est avec çà vous pouvez comprendre les passages de paramètres

Ce sont les éléments obligatoires (à mon sens) Si vous avez des suggestions n'hésitez pas
signaler à un administrateur
Commentaire de rvblog le 23/09/2006 23:37:27

Salut Jeskor,

bien, bien.
Que dire de plus?
Juste une question, sais-tu si la propriété Color est bien restaurée par le PropertyBag?

En VB, le PropertyBag sert, entre autres, à ce que le développeur puisse définir une propriété, à un ActiveX, situé sur un formulaire, et que le formulaire l'enregistre et la restaure à sa ré-ouverture (en instance conception comme en instance exécution).

En HTML, il serait intéressant de vérifier que le navigateur implémente bien le PropertyBag, ce sur quoi j'ai un vrai doute, car pour que le surfeur bénéficie des réglages liés à l'instance conception, il faudrait lui downloader un fichier contenant le PropertyBag de la conception, et en ce qui concerne l'instance exécution, il faudrait désactiver l'affectation de la couleur (balise PARAM), donner un moyen à l'utilisateur de modifier la propriété, et vérifier que, lorsqu'il recharge la page, la propriété est restaurée.

En bref, si ça ne marche pas, pas besoin du ReadProperties et du WriteProperties.

Qu'en penses-tu?

signaler à un administrateur
Commentaire de foued69 le 26/09/2006 17:19:13

Salut,
je débute en vb et voudrais savoir comment vous obtenez la donnée classid="clsid:30DAB2BC-CC11-4DBE-804B-6661C9E8CD0C" d'un activex
merci

signaler à un administrateur
Commentaire de skyaero le 08/06/2007 18:10:47

Salut
pas mal ce tuto.

J'ai voulu le mettre sur un activeX que j'ai fait en VB6 mais je n'y arrive pas.
En fait, mon problème se situe dès le debut de l'appel de l'activex, tout fonctionne bien mais quand je met un parametre (<PARAM name='COLOR' Value='Nouvelle_Couleur'>), l'activex ne veux plus se charger.

voici le code d'appel de l'activex situé dans le fichier html :
<OBJECT ID="UserControl1"
CLASSID="CLSID:0EE4A7CF-61AC-4IIR-AA53-FD53E3A4B372"
CODEBASE="monactivex.CAB#version=1,0,0,0">
<PARAM name='Caption' Value="dfg">
</OBJECT>

Est-ce que quelqu'un aurait une idée ? ca fait deux jours que j'ai ce problèmes !

signaler à un administrateur
Commentaire de gphoebus le 11/10/2007 18:40:23

Idem pour moi, aprés chargement de la page web, elle rest blanche !
Quelqu'un sait il se qu'il se passe ?
Cordialement à tous

signaler à un administrateur
Commentaire de Marcial le 15/11/2007 14:27:20






Slt,
pour skyaero et gphoebus...

Votre problème viens du fait que lorsque l'on ajoute des balises <param> il faut impérativement mettre les attributs "height" et "width" de la balise <object>, sans quoi l'ActiveX est bien chargé mais a une taille 0x0 donc invisible...

Au cas ou...
Vérifiez tout de même que vos paramètres IE authorise bien l'execution des ActiveX...

That's all...

signaler à un administrateur
Commentaire de JACKY007 le 03/01/2008 10:44:58

Pour foued69,
la clsid d'un activeX est le numéro de référencement du composant au niveau de la base de registre.
Lorsque l'on crée un activeX celui-ci est automatiquement référencé dans la base de registre. Il suffit donc de rechercher grâce à son nom, le clsId en effectuant : Démarrer | Executer | regedit ; puis de recherché le nom du composant dans l'éditeur de registre. On relève le clsid dans la fenêtre de gauche et celui-ci est directement réutilisable via HTML tel que l'on nous le décrit dans le tuto. Attention à ne rien y modifier...

signaler à un administrateur
Commentaire de PhilouOnLine le 16/02/2009 11:20:42

Bonjour,

Dans le même esprit, je viens de créer un activeX .ocx lié au composant MSComm pour lancer la numérotation téléphonique sur le modem connecté au PC.
Ma balise object m'initialise bien mon activeX qui fonctionne de manière autonome (en tapant le N° tél. dans la zone appropriée).
Ma problématique réside dans la communication entre javascript et ce composant (le développe une appli web PHP/MySQL. Je voudrais en fait que des méthodes publiques de mon composant puissent être appelées par javascript (pour numéroter / pour raccrocher).

monocx = new ActiveXObject("nom_de_mon_activex") génère une erreur de type "Un composant ne peut pas créer d'objet activex".
Je précise que mes paramètres IE sont très ouverts concernant la sécurité activeX.

Merci pour vos lumières.
Philippe

signaler à un administrateur
Commentaire de rvblog le 16/02/2009 12:24:36

Salut PhilouOnLine, salut à toutes et tous,

PhilouOnLine, tu dis "Ma balise object m'initialise bien mon activeX qui fonctionne de manière autonome", puis tu dis "monocx = new ActiveXObject("nom_de_mon_activex") génère une erreur de type "Un composant ne peut pas créer d'objet activex"" !

Alors question : initialise bien ou pas?
plus généralement, et sans attendre ta réponse, ton contrôle est-il bien téléchargé sur le poste client?

rvblog.

signaler à un administrateur
Commentaire de Nodoka le 19/02/2009 11:00:26

Bonjour,
Je voulais savoir si il était possible d'avoir un tuto équivalent pour C++ builder ^^, car c'est exactement se qu'il me faut.
Je doit récupérer la valeur d'un édit, et la rangé dans l'attribut de la classe de mon activeX.

Je vous en serez très reconnaissant.


Merci.

signaler à un administrateur
Commentaire de PhilouOnLine le 19/02/2009 17:16:42

Bonjour RVBLOG (et aussi aux autres),

En effet, j'ai eu des petits problèmes pour appréhender la notion de javascript avec ActiveX. Je cherchais en fait à "réinstancier" mon composant alors q'il était déjà présent dans ma balise object.
Il suffit en fait de coder des lignes telles que :
myObj = document.getElementById("ID_de_ma_balise_object");
myObj.UneMethodeDeMonComposant(param1, paramN);

Aujourd'hui, le souci est tout autre.
J'ai généré un .CAB via la Package and Deployement Wizard de VB incluant toutes les DLL dont le programme a besoin.

Le codebase de ma balise object devient donc codebase="http://mon_serveur/mes_dossiers/NomDeMonActiveX.CAB#version=1,0,0,0"
Le classid est celui généré par VB.

j'envoie le tout en FTP sur mon serveur de prod et là, les navigateurs intérogeant ma page de test reçoivent l'information qu'il faut télécharger l'activeX, je fait "installer" et rien ne se passe (le composant ne s'installe pas à priori).
En regardant du côté des modules complémentaires IE, sur certains postes, il est installé et pas sur d'autres.
Néanmoins, sur les postes où il s'est installé, le composant n'est toujours affiché sur la page web (donc toujours fonctionnel).

Mes chemins sont OK.
Evidemment, sur mon poste de dev, tout fonctionne parfaitement, depuis mon dev ainsi que depuis la prod.
J'ajoute que les postes sur lesquels j'ai effectué mes test sont "open" au niveau des activeX.

Merci de votre aide à tous.

PS : j'avais essayé avec mon activeX en .ocx, sans succès. Après des recherches, j'ai cru comprendre qu'il était plus judicieux de faire un package en .CAB

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,062 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.