URGENCE : BESOIN D'AIDE !!!

Résolu
copyrightx Messages postés 59 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 14 janvier 2016 - 10 août 2006 à 14:29
copyrightx Messages postés 59 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 14 janvier 2016 - 3 sept. 2006 à 18:41
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 août 2006 à 16:19
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 !
3
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
10 août 2006 à 14:52
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 août 2006 à 15:23
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
0
copyrightx Messages postés 59 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 14 janvier 2016
10 août 2006 à 16:06
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 ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
copyrightx Messages postés 59 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 14 janvier 2016
3 sept. 2006 à 18:41
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
0
Rejoignez-nous