WithEvent

lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008 - 31 août 2008 à 12:41
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008 - 1 sept. 2008 à 19:31
Bonjour a tous et a toutes,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>




Je me suis un peux égaré dans ma structure, s'il y aurais parmi vous un volontaire qui pourrais me re-guider sur la bonne route.
J'ai crée une classe :



Dans le module de classe  qui s'appelle (ObectClasse) se trouve cette structure
Private V_Rayon As Double
Private V_Centre As Variant
Public Cercle As AcadCircle
Public Event RayonChanger(ByVal valeur As Double)


Private Sub Class_Initialize()
MsgBox "Initialise"
End Sub
Private Sub Class_Terminate()
MsgBox "Distruction"
End Sub
Public Property Let Rayon(ByVal valeur As Double)
V_Rayon = valeur
RaiseEvent RayonChanger(V_Rayon)
End Property


Public Property Get Rayon() As Double
Rayon = V_Rayon
End Property
Public Property Let Centre(ByVal valeur As Variant)
V_Centre = valeur
End Property


Public Property Get Centre() As Variant
Centre = V_Centre
End Property


Function DrawCercle() As Object
Set Cercle = ThisDrawing.ModelSpace.AddCircle(Centre, Rayon)
Cercle.Update
End Function


Private Sub Cercle_RayonChanger()
MsgBox "Le Rayon a changé!!!"
End Sub

Dans le module courrant se trouve ce-ci
Option Explicit
Public Cercle As New ObjectClasse
Public Sub EraClasse()
Dim pt1 As Variant
pt1 = ThisDrawing.Utility.GetPoint(, "Pts")
Cercle.Centre = pt1
Cercle.Rayon = 100#
Cercle.DrawCercle
End Sub
J'ai 2 probleme!!
N°1:
Le msgbox dans( Class_Terminate) n'apparais pas?
N°2:
Quand je modifie le rayon le msgbox dans (Cercle_RayonChanger) n'apparais pas?

le (WithEvents) il va dans quel module?

3 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
31 août 2008 à 14:32
salut,

seuls :
ThisDrawing.ModelSpace.AddCircle(Centre, Rayon)
et
pt1 = ThisDrawing.Utility.GetPoint(, "Pts")

peuvent faire penser à du DotNet
tout le reste ressemble bien trop à VB6....

sauf erreur de ma part (possible!!), les property contiennent le Get et Set dans la même property, et le LET disparaît

de plus ce n'est pas
Public Cercle As New ObjectClasse
mais
Public withevents Cercle As ObjectClasse

ensuite il faut initialiser
(nb : pourquoi PUBLIC ?)

ton code semble être un mic mac de choses trouvées à droite à gauche, c'est incompréhensible...
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
1 sept. 2008 à 03:29
une tentative de rectification:

Private mnRayon As Double
Public Centre As Variant
Private moCercle As AcadCircle
Public Event RayonChanged(ByVal valeur As Double)

Private Sub Class_Initialize()
    MsgBox "Initialize"
End Sub

Private Sub Class_Terminate()
    MsgBox "Destruction"
End Sub

Public Property Let Rayon(ByVal Value As Double)
    mnRayon = Value
    RaiseEvent RayonChanged(Value)
End Property

Public Property Get Rayon() As Double
    Rayon = mnRayon
End Property

Public Property Get Cercle() As AcadCircle
    Set Cercle = moCercle
End Property

Public Function DrawCercle() As Object
    Set moCercle= ThisDrawing.ModelSpace.AddCircle(Centre, Rayon)
    moCercle.Update
    Set DrawCercle = moCercle
End Function

et dans le module standard:

Option Explicit

Public WithEvents Cercle As ObjectClasse

Public Sub EraClasse()
    Set Cercle = New ObjectClasse  '# a placer ou tu veux, au final...
    Cercle.Centre = ThisDrawing.Utility.GetPoint(, "Pts")
    Cercle.Rayon = 100#
    Cercle.DrawCercle
End Sub

Private Sub Cercle_RayonChanger()
    MsgBox "Le Rayon a changé!!!"
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
1 sept. 2008 à 19:31
salut renfiel,
il bloque sur "Public WithEvents Cercle As ObjectClasse"
il le met en rouge?
0