lispo
Messages postés49Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention 1 septembre 2008
-
31 août 2008 à 12:41
lispo
Messages postés49Date d'inscriptiondimanche 2 octobre 2005StatutMembreDerniè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?
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 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