Déclenché un évènement sous VB6, dans un module de class

zuntzu Messages postés 16 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 15 avril 2009 - 1 avril 2009 à 15:49
zuntzu Messages postés 16 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 15 avril 2009 - 3 avril 2009 à 13:36
Bonjour,


Je n'arrive pas à enclenché un évènement dans un module de classe sous VB6.


Afin d'effectuer la gestion d'erreurs, je fait appel à des évènement dans  un

module de classe.


Les évènement son déclaré dans le module de classe (objet fluke) par:


Public Event ConnectionTCPPB()

(par exemeple)


Cette évènement est déclenché dans une fonction du module de classe (objet

fluke), par un:


RaiseEvent ConnectionTCPOK


Les évènement sont ensuite récupère sur la feuille par la déclaration de


Public WithEvents flukeEvents As fluke


dès lors sur la feuille, on peut utiliser une fonction ( reconnue

automatiquement par la feuille) se déclenchant lorsque

l'évènement est déclenché:


Private Sub flukeEvents_ConnectionTCPOK()

Label1.Caption = "fluke connecté"

End Sub


Le problème, c'est que malgré l'exécution de l'évènement par un RaiseEvent, la

fonction flukeEvents_ConnectionTCPOK(), n'est jamais enclenché.


Auriez vous une idée, ou solution pour régler ce problème?


cordialement

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 avril 2009 à 16:10
tu as bien instancié ton objet flukeEvents dans ta form ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 avril 2009 à 16:14
Salut
Erreur de programme ou de copier-coller ?
Tu déclares une fonction portant le nom ConnectionTCPPB et tu fais un RaiseEvent avec ConnectionTCPOK
As-tu bien mis, dans les options, la déclaration obligatoire des variables, générant ainsi l'apparition de Option Explicit en haut de chaque page de code ?
Cela évtirait ce genre d'erreur.

Sinon, dans un Event, tu peux aussi passer des variables, genre 
   Public Event Message(Texte As String)
et le déclencher avec 
   RaiseEvent Message("Connexion")
De cette manière, tu peux n'avoir qu'un seul event et récupérer des infos détaillées depuis la Classe

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
zuntzu Messages postés 16 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 15 avril 2009
3 avril 2009 à 09:10
Merci du conseil, je viens d'essayer le:
Public Event Message(Texte As String)
et le:
   RaiseEvent Message("Connexion")

sans succès.

Pour l'erreur signalé, il s'agit d'une faute de copier collé du programme dans le message déposé sur le forum désolé.
Pourtant  je peut récuperer  sur la feuille des fonctions associées aux évènements de la classe, par un :
Public WithEvents flukeEvents As fluke
(fluke étant ma classe)

Mais malgré un RaiseEvent
la fonction sur la feuille n'est pas déclenché.
cordialement
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 avril 2009 à 10:43
Re
Dans la mesure où tu vois l'évènement dans l'objet (dans le code), ta classe est reconnue, donc ça devrait fonctionner.
Bizarre
Es-tu sûr de passer sur ton RaiseEvent ?
As-tu utilisé le mode debug pour pister ton programme (F9, F8, F5) ?
0

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

Posez votre question
zuntzu Messages postés 16 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 15 avril 2009
3 avril 2009 à 13:04
Oui en mode pas à pas je passe sur le RaiseEvent.
Le  problème c'est que je suis censé déclencher l'évènement par le RaiseEvent, or il ne se dèclenche pas.

cordialement
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2009 à 13:14
ton objet est bien instancié ?

je veux dire, celui qui execute le code que tu trace pas à pas...
est bien celui déclaré dans ta Form ?
0
zuntzu Messages postés 16 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 15 avril 2009
3 avril 2009 à 13:36
l'objet est bien instancié, puisque d'autres   fonction de l'objet servent à mon programme.

Le seul problème réside dans la gestion des évènement de l'objet, afin de pouvoir mettre des messages d'erreur sur la feuille.

Mon Objet s'appelle fluke, je déclare des évenement par:

Public Event ConnectionTCPOK() 'évenement

je déclenche cette évènement dans la fonction connection de l'objet par:

Public Sub connexion()
' on ferme la connexion potentiellement existante
WS_FLUKE.Close
' on se connecte au fluke
WS_FLUKE.Connect
Dim starttime
'on effectue une tempo afin de laisser le temsp au fluke de se connecter
starttime = Timer
Do While ((Timer < starttime + 2) And (WS_FLUKE.State <> 7))
    DoEvents
Loop
'opératiuon d'initialisation
Call initialisation_FLUKE
'on verifie la connexion
If WS_FLUKE.State = 7 Then

RaiseEvent ConnectionTCPOK
DoEvents
End If

End Sub

Puis sur ma feuille je récupère mes éveènement en déclarant flukeEvents (nom lambda) de la façon suivante:

Public WithEvents flukeEvents As fluke

Dès lors sur ma feuille, en selectionnant flukeEvents dans l'onglet en haut à gauche, j'ai tous mes évènement répertorier dans l'onglet en haut à droite.
Alors, je selectionne la fonction qui m'intéresse et appraît alors le code suivant:

Private Sub flukeEvents_ConnectionTCPOK()
End Sub

j'ajoute un label pour l'affichage si l'évènement est déclencher:

Label1.Caption = "fluke connecté"

Et voilà, normalement je déclenche un évènement et je peut transmettre sur ma feuille un message attestant que cet évènement s'est produit.

cordialement
0
Rejoignez-nous