zuntzu
Messages postés16Date d'inscriptionjeudi 12 mars 2009StatutMembreDernière intervention15 avril 2009
-
14 avril 2009 à 16:18
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
15 avril 2009 à 15:09
Bonjour j'utilise un raiseEvent dans un module de classe, je récupère bien les évènement dans les combo box de ma feuille. Mais a priori malgré un raiseEvents, l'évènement n'est jamais déclencher.
cordialement
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 avril 2009 à 08:59
même chose que précedemment
tu utilises dans ta form DEUX instance distinctes de ta class toto1
tu es abonné aux evenements de l'instance nommée 'tata'
et tu déclenche l'évenement de l'instance nommée 'tests' en appelant sa méthode 'titi'
c'est exactement le souci que je t'ai signalé la semaine dernière
'# Pour la feuille j'ai taper ceci:
Private WithEvents tata As toto1
Private Sub Command1_Click()
'on appele la fonction titi
Label1.Caption = tata.titi
End Sub
Private Sub Form_Load()
'on initialise tata (ne peut se faire a la déclaration, du fait du mot clé WithEvents)
Set tata = New toto1
Label1.Caption = False
End Sub
Private Sub tata_toto1(sMessage As String)
'on effectue une action suite à l'évènement
MsgBox sMessage
Command1.Caption = "titi"
End Sub
'#Dans le module de classe il y a:
Public Event toto1(sMessage As String)
Public Function titi() As Boolean
'fonction d emon objet renvoyant la valeur vrai lorsqu'elle est executer
'declenche l'évènement toto1
titi = True
RaiseEvent toto1("Bonjour ")
End Function
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 15 avril 2009 à 01:42
zuntzu : Tu es gentil, mais cela fait 3 fois que tu poses la question.
Depuis le temps, tu devrais savoir qu'il faut donner le maximum de détails et pas attendre qu'on te les demande.
As-tu comme je te l'ai déjà proposé auparavant, tester le RaiseEvent dans un nouveau projet vide, sans rien d'autre ?
Parce que ton problème ne vient pas de ces lignes mais d'un élément externe à ces lignes.
Il sufft que tu aies créé une variable qui s'appelle comme ton Event ou autre mot réservé et VB ne sait plus quoi faire.
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)
zuntzu
Messages postés16Date d'inscriptionjeudi 12 mars 2009StatutMembreDernière intervention15 avril 2009 15 avril 2009 à 08:48
Bonjour,
eh oui c'est toujours le fluke
J'ai tester dans un autre projet: ô rage ô désespoir ça ne marche pas:
Pour la feuille j'ai taper ceci:
Dim toto As Boolean
Dim tests As New toto1
Public WithEvents tata As toto1
Private Sub Command1_Click()
'on appele la fonction titi
toto = tests.titi
Label1.Caption = toto
End Sub
Private Sub Form_Load()
'on initialise
Set tata = New toto1
toto = False
Label1.Caption = toto
End Sub
Private Sub tata_toto1(sMessage As String)
'on effectue une action suite à l'évènement
MsgBox sMessage
Command1.Caption = "titi"
End Sub
Dans le module de classe il y a:
Public Event toto1(sMessage As String)
Public Function titi() As Boolean
'fonction d emon objet renvoyant la valeur vrai lorsqu'elle est executer
'declenche l'évènement toto1
titi = True
RaiseEvent toto1("Bonjour ")
End Function
Pourtant en mode pas à pas: je rentre bien dans la fonction titi (titi passe à vrai) et je passe bien sur le raiseEvent.
Voilà, désolé si j'ai posé trois fois la question. Mais dans mon projet fluke, seul la gestion des évènements n'est pas encore opérationnel.
zuntzu
Messages postés16Date d'inscriptionjeudi 12 mars 2009StatutMembreDernière intervention15 avril 2009 15 avril 2009 à 10:43
Merci beaucoup
ça marche.
Le problème viens bien de mon autre programme, en effet en suivant le tata.titi ça marche, mais si j'ai une winsock dans le titi, ça marche moins bien.
Je vais essayer de trouver une solution.
Merci
zuntzu
Messages postés16Date d'inscriptionjeudi 12 mars 2009StatutMembreDernière intervention15 avril 2009 15 avril 2009 à 11:12
ok: sur ma feuille j'ai:
'je declare mon objet
Dim fluke As New fluke
Public WithEvents flukeEvents As fluke 'on récupère les évènement de la classe fluke
Private Sub Form_Load()
Set flukeEvents = New fluke
fluke.Initialize WS 'WS est ma winsock sur la feuille
End Sub
Private Sub CmdConnexion_Click()
fluke.connexion
flukeEvents.connexion
End Sub
Private Sub flukeEvents_ConnectionTCPOK()
MsgBox ("ok")
End Sub
dans mon module de classe, il y a :
Dim WS_FLUKE As Winsock
Public Event ConnectionTCPOK() 'évenement
Public Sub Initialize(WS As Winsock)
'on lie la winsock du fluke à la winsock de la page principal
Set WS_FLUKE = WS
'on définit l'IP et le numèro de port du FLUKE
WS_FLUKE.RemoteHost = "192.168.0.254"
WS_FLUKE.RemotePort = 3490
End Sub
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
'on verifie la connexion
If WS_FLUKE.State = 7 Then
'on déclecnhe l'évènement connection TCP OK
RaiseEvent ConnectionTCPOK
DoEvents
End If
If WS_FLUKE.State <> 7 Then
End If
End Sub
voilà pour l'opération de connexion avec winsock et l'évènement qui permet de la verifier.