URGENCE : BESOIN D'AIDE !!!

Résolu
Messages postés
59
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
14 janvier 2016
-
Messages postés
59
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
14 janvier 2016
-
Bonjour à tous,


Voici le problème que je rencontre, j'ai à ma disposition :


- Un projet de Contrôle ActiveX (Nommé Projet1)
- Un module (Nommé Module1)- Un contrôle ActiveX (AutoRedrawTrue, ScaleMode Pixel, Nommé UserControl1)
- Une fonction basic qui modifie la couleur d'arrière-plan du controle qu'on lui envoie, placée dans le module


Voici cette fonction :


Public Function ChangeColor (Control as Object)
Control.BackColor = rgb(Rnd(255),Rnd(255),Rnd(255))
End Function


Le problème étant que lorsque j'appel la fonction à partir du contrôle ActiveX de la sorte :


ChangeColor UserControl


Microsoft Visual Basic déclare une erreur : "UTILISATION NON VALIDE DE NOM DE CLASSE DE BASE". Normalement, la fonction doit modifier uniquement la couleur d'arrière-plan du contrôle ActiveX. J'ai donc créé les propriétés pour BackColor mais cela ne marche toujours pas. Le réel problème consiste à trouver comment appeler une fonction externe (placée dans un module) en lui faisant passer "UserControl" de façon à pouvoir utiliser la fonction mais ce, uniquement à partir du module.


Sans la résolution à ce problème, je serais obligé de placer les fonctions du module danschqcun des contrôles ActiveX vu que chacun utilise presque les même fonctions !!!


AIDEZ-MOI à trouver la solution.


MERCI d'avance !

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Pourtant, chez moi ca marche nickel :

Dans ton usercontrol :
Public Property Let BackColor(ByVal lBackColor As OLE_COLOR)

    Let UserControl.BackColor = lBackColor
   
End Property

Private Sub UserControl_Click()

    ChangeColor Me

End Sub

Dans ton module :
Public Sub ChangeColor(oControl As Object)

    oControl.BackColor = vbBlack
   
End Sub

Attention : il faut que le module soit dans le même projet que ton usercontrol !
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Salut, Logique un usercontrol est une classe
vois plustôt avec UserControl1 qui correspond certainement.

Si tu créer un objet Toto
alors lorsque tu l'instancie par : Dim TT as new Toto
alors tu devra faire : ChangeColor TT
et non : ChangeColor Toto

Chris...
Web : Firstruner
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Si c'est vraiment si urgent que cà, alors mets un titre plus explicite, tu auras plus de monde qui viendra te répondre !

Sinon, ce n'est pas ChangeColor UserControl mais : ChangeColor Me

Le Me correspondant à l'instance courante du UserControl
Messages postés
59
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
14 janvier 2016

J'ai déjà testé avec Me mais cela ne marche toujours pas.


Je vais tester la réponse de cboulas mais sinon je n'ai pas de solution ...
Messages postés
59
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
14 janvier 2016

Désolé pour le retard ...

J'ai trouvé. Le problème ne venait pas de l'appel de procédure. En fait la fonction ChangeColor était uniquement un exemple pour essayer de définir le problème. J'ai une fonction placée dans un module qui me permet, entre autre, de tracer des points sur le contrôle ActiveX placé dans le même projet. Cependant si on écrit dans ce module UserControl.Line (x1,y1)-(x2,y2) et que la propriété .Line n'existe pas dans le code du UserControl, la ligne n'est pas tracée. Comme je ne voulais pas créer la propriété .Line au UserControl, j'ai utilisé l'API MoveToEx ainsi que ceux utilisés pour créer une ligne donc c réparé.

Merci quand même à tous pour le soutient. Pour plus d'infos sur l'évolution du projet Apparea®_xp, rendez-vous sur "www.apparea-ocx.fr.fm" à partir d'Internet Explorer (pour avoir une ouverture correcte des pages). Sur le site, cliquez sur la rubrique "Visite dans les coulisses de Apparea®_xp.

Bonne rentrée à tous les concernés !

Copyrightx