Ocx pour débutant

Signaler
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Bonjour,

J'ai une procédure relativement importante en taille qui permet d'appliquer des dégradés de couleurs sur des picturebox, et des Form.

Question: Est-il possible d'intégrer cette procédure dans un OCX en sachant bien entendu que ces changements de dégradés interviendraient sur des objets qui sont en dehors de l'Ocx dans la Form Main de l'utilisateur par exemple.

Je remercie le spécialiste qui aura l'amabilité de me donner la réponse et les quelques instructions nécessaires pour faire fonctionner la procédure.

Par avance merci.

Ps: J'ai "étudié" pas mal d'Ocx et je n'en ai trouvé aucun qui explique avec un exemple très simple la technique que doit utiliser un débutant pour réaliser ce genre de développement. Idem pour les tutoriaux que j'ai pu consulter.

15 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Pour faire ce que tu exposes-là, il te suffit d'écrire des procédures dans le code de ton ocx (dans un module) et de les appeler en leur passant les objets concernés.
soit toto.ocx l'ocx et donc toto1 l'objet inséré dur un Form
si existe la procédure titi(O as ...) dans un module de ton ocx ===>>
toto1.titi(ton_objet) traitera ton objet ton_objet.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour Mr. Ucfoutu,

Je pense ne pas avoir compris correctement votre réponse. Voilà ce que j'ai fais:

1) Le Vbp de mon Ocx porte le Nom VbpOcx et le nom de l'Ocx porte le nom MonOcx.
2) J'ai ajouté un module dans MonOcx que j'ai chargé avec la Procédure ci-dessous
- Public Sub OnDegrade(Objet As Object, Optional ByVal ParmType As String, Optional ByVal PCouleur As String)
- End Sub

3) Dans la form de mon Projet appelant j'ai écrit l'instruction:
- Call MonOcx.OnDegrade(Me, "VV", vbYellow)

4) A l'Exécution j'ai le message suivant:
- Erreur de Compilation - Méthode ou membre de données introuvable ----> sur le Call MonOcx

Encore Merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
quel est le nom donné à ton contrôle une fois sur ton Form ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

ME correspond au Nom de ma Form que je souhaite "Dégradé") Me est identique à MonProjet

Call MonOcx.OnDegrade(Me, "VV", vbYellow) <-- dans ma Form

Public Sub OnDegrade(Objet As Object <-- dans le Module MonOcx
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Tu n'as pas répondu à ma question.
Ton ocx est un contrôle utilisateur. En cette qualité, il est insérable et nommable sur un Form de ton appli (exactement comme l'est, par exemple, une textbox).
Quel est le nom (par défaut ou que tu lui as donné) qu'il porte une fois inséré sur un Form de l'appli qui l'utilise (sa propriété Name) ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

OCX:
Le Vbp de l'Ocx Porte le Nom: VbpOcx
L'Ocx Porte le Nom: MonOcx
L'Ocx.ctl Porte le Nom: MonOcx

L'application:
Le Nom du Projet MonApp.vbp
Le Nom de la Form MaFrm.frm
Le Nom de la Form MaFrm

Call MonOcx.OnDegrade(Me, "VV", vbYellow) <-- dans ma Form

Public Sub OnDegrade(Objet As Object <-- dans le Module MonOcx
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Y a t'il encore un pilote dans l'avion ?.....................
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Y a t'il encore un pilote dans l'avion ?.

Oui, bien sûr, bien qu'encore imbibé à la suite de ripaille.
Mais la réponse que tu as faite n'est pas la réponse à ma question. Je t'engage à la relire calmement.
Ce que j'attends n'est pas le nom de ton ocx, mais celui du contrôle utilisateur inséré sur un form de ton appli.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Je n'ai aucun contrôle dans la Form de mon application (Car c'est un essai pour comprendre les Ocx....).

Ce que la procédure de l'Ocx doit traiter c'est la Form de mon Application qui porte le nom --> MaForm.

J'espère que j'ai bien répondu cette fois ci.


Merci et à demain.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Ben ...
Je ne vois vraiment pas comment tu peux tester ce contrôle que tu as créé sans l'insérer sur un Form d'une application !
Ton ocx, c'est comme n'importe quel autre composant (un commandbutton, une textbox, etc ...). Il ne devient "actif" qu'une fois inséré dans une appli.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,


L'Ocx contient un Label qui porte le Nom Dtext. Dans l'application, je modifie ses attributs comme suit: --> MonOcx.Font = "Comic sans Ms"
Un mystère pour moi, le label porte le nom Dtext et n'apparaît pas dans l'instruction ci-dessus. (C'est OK à l'exécution)

J'ai ensuite ajouté la procédure OnDégrade dans un module de l'Ocx
- Public Sub OnDegrade(Objet As Object ,xxxxxx,xxxxxx)
et ajouté un Call à cette procédure dans l'application.
- Call MonOcx.OnDegrade(Me, "VV", vbYellow)
J'ai, pour modifier les attributs du Label,utilisé le nom de l'Ocx --> MonOcx comme
je l'ai fais pour appeler le Call.

Le projet est composé des modules suivants:
- MonProjet.vbg <-- Groupe de Projets
- MonProjet.vbp - Name = MonProjet <-- L'application
- MaForm.frm - Name = MaForm <-- L'application
- MonOcxP.vbp - Name= MonOcxP <-- L'Ocx
- MonOcx.Ctl - Name= MonOcx <-- L'Ocx
- MonOcxM - Name=MonOcxN <-- Le Module de l'Ocx qui contient La Procédure OnDégrade

Désolé !

Je découvre les Ocx.
Sans documentation, j'en suis réduit à décortiquer les sources pour essayer de comprendre leurs fonctionnements et je n'ai encore rien compris.

Cela dit, je comprends la difficulté que vous rencontrez pour m'aider et je comprendrais parfaitement que vous ne puissiez me donner réponse en raison des difficultés que je rencontre à vous donner les informations que vous me demandez.

Cordialement.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

J'ai l'impression que le capitaine a quitté le navire et qu'il a laissé tout seul son passager à bord sans gilet de sauvetage et tout ça, dans la tempête
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
C'est tout simplement que tu me laisses coi, cjvg...
Désolé, mais je ne peux faire de miracles...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Je suis désolé de ne pas avoir su vous donner les informations que vous me demandiez. Cela est certainement dû à mon ignorance sur le sujet. Je pensais avoir tout donné dans mon dernier message mais je me rends compte que je me suis encore trompé.

Désolé pour le dérangement et merci encore.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

Je n'ai pas encore trouvé la solution parfaite pour résoudre mon problème.
Ce que je viens de faire et qui fonctionne correctement c'est:

1) J'ai supprimé le module de l'Ocx qui contenait la Procédure OnDegrade
2) J'ai incorporé directement cette procédure dans l'UserControl
- Public Sub Ondegrade(Objet As Object,xxxx,xxxxxx) .......... End Sub

3) Dans la Form de mon application, j'ai placé l'instruction:
- Call MonOcx.OnDegrade(Me, "VV", vbCyan)
----------------------------------------------------------------------------------------

Je souhaiterais conserver le Module dans l'Ocx mais je ne sais pas ce qu'il faut faire pour
que la procédure OnDegrade soit alors connue de l'UserControl.


Merci au technicien qui m'apporteras la solution