Evenement dans une classe et Recepteur qui ne Fonctionne pas
EMMANUELTAV
Messages postés2Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 9 février 2005
-
9 févr. 2005 à 21:57
psz1974
Messages postés2Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention24 mars 2005
-
24 mars 2005 à 18:07
Je ne sais pas si c'est le bonne endroit pour pose cette question !!! j'ai un probleme qui est spec!!! :
- j'ai une classe : cNoeudTypeDb
Public Event evmDeplacementVersBas()
- Dans cette classe une propriétée :
Public Property Let ArbHierPosFils(ByVal vData As Integer)
On Error GoTo ArbHierPosFilsLetErr
mvarArbHierPosFils = vData
'-- Si la Valeur de la variable interne a la classe est 0 --
'-- alors l'est la première ecriture --
If mvarArbHierPosFils = 0 Then
'-- Si non On est en cour de la ré assigner --
Else
MsgBox "tu est en train de la bouger c'est un evenement"
RaiseEvent evmDeplacementVersBas
End If
Exit Property
ArbHierPosFilsLetErr:
'---------------------------------------------------------------------------------------
Call RaiseError(MyUnhandledError, "cNoeudTypeDb:ArbHierPosFils Propriétée Let")
End Property
- dans un form :
Private WithEvents test As cNoeudTypeDb
Private Sub test_evmDeplacementVersBas()
cmdReduireBranche.Visible = False
MsgBox "c'es recu"
End Sub
- Rien ne marche !!! de plus lorsque je débog les instruction dans la classe sont correctement executer mais l'evenement dans le form n'est pas executer. !!!!!
A voir également:
Evenement dans une classe et Recepteur qui ne Fonctionne pas
psz1974
Messages postés2Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention24 mars 2005 24 mars 2005 à 18:05
Salut,
Sur la classe rien à dire, c'est bon, par contre pour la réception de l'évenement tu dois prendre en compte trois choses.
1) Tu ne peux pas te contenter de la déclaration avec withevents, il faut quand meme que tu instancie l'objet, soit avec un new, soit en lui affectant un object déjà alloué
2) Pour que la propriété Let de ta classe soit appelée, il faut que quelque part, tu ai un :
test .ArbHierPosFils= "toto"
3) enfin, essaie d'éviter les messagebox quand tu fais tes tests sur de l'événementiel (meme si ca peux quand meme marcher
Voilà un exemple testé :
<HR>
Une Classe cTest
Public Event MyEvent(MyValue As String)
Public Property Let Member(newValue As String)
RaiseEvent MyEvent(newValue)
End Property
<HR>
Dans une feuille (form): Private WithEvents otest As cTest
Private Sub Form_Load()
Set otest = New cTest
otest.Member = "coucou"
End Sub
Private Sub otest_MyEvent(MyValue As String)
Me.Caption = MyValue
End Sub
<HR>
Et l'objet de démarrage doit etre la feuille.
Voilà, c tout simple
Ma zété tun grosse problem Za