Problème de Class !

bernardbouree Messages postés 36 Date d'inscription dimanche 1 juillet 2001 Statut Membre Dernière intervention 19 avril 2015 - 27 juin 2004 à 12:39
bernardbouree Messages postés 36 Date d'inscription dimanche 1 juillet 2001 Statut Membre Dernière intervention 19 avril 2015 - 27 juin 2004 à 12:41
Bonjour
Je suis un peu nouveau dans les class.
J'ai créé grâce à l'assistant générateur de classes deux module de classes:

le premier se nomme Groupe et contient deux propriétes
le second se nomme Groupes et une collection visant à grouper les "Groupe".

Après génération du code j'obtien un bouclage infini entre les deux classes (voir schéma joint). est-ce normal ?

Si non que dois-je faire pour l'éviter ?

Merci de votre aide

1 réponse

bernardbouree Messages postés 36 Date d'inscription dimanche 1 juillet 2001 Statut Membre Dernière intervention 19 avril 2015
27 juin 2004 à 12:41
Zut je croyais que l'on pouvait joindre un fichier attaché.
Voici mon code :

POUR GROUPE :
Option Explicit

'variables locales de stockage des valeurs de propriétés
Private mvarNom As String 'copie locale
Private mvarGroupes As Groupes

Public Property Get Groupes() As Groupes
If mvarGroupes Is Nothing Then
Set mvarGroupes = New Groupes
End If

Set Groupes = mvarGroupes
End Property

Public Property Set Groupes(vData As Groupes)
Set mvarGroupes = vData
End Property
Private Sub Class_Terminate()
Set mvarGroupes = Nothing
End Sub

Public Property Let Nom(ByVal vData As String)
'utilisé lors de l'affectation d'une valeur à la propriété, du coté gauche de l'affectation.
'Syntax: X.Nom = 5
mvarNom = vData
End Property

Public Property Get Nom() As String
'utilisé lors de la lecture de la valeur de la propriété, du coté droit de l'instruction.
'Syntax: Debug.Print X.Nom
Nom = mvarNom
End Property

POUR GROUPES

Option Explicit

'variable locale pour la collection
Private mCol As Collection

Public Function Add(Nom As String, Optional sKey As String) As Groupe
'créer un nouvel objet
Dim objNewMember As Groupe
Set objNewMember = New Groupe

'définir les propriétés passées à la méthode
objNewMember.Nom = Nom
Set objNewMember.Groupes = Groupes
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If

'renvoyer l'objet créé
Set Add = objNewMember
Set objNewMember = Nothing

End Function

Public Property Get Item(vntIndexKey As Variant) As Groupe
'Utilisé pour référencer un élément dans la collection
'vntIndexKey contient l'index ou la clé dans la collection
'Il est donc déclaré en tant que Variant 'Syntaxe: Set toto x.Item(xyz) ou Set toto x.Item(5)
Set Item = mCol(vntIndexKey)
End Property

Public Property Get Count() As Long
'utilisée pour lire le nombre d'éléments dans la
'collection. Syntaxe: Debug.Print x.Count
Count = mCol.Count
End Property

Public Sub Remove(vntIndexKey As Variant)
'utilisée lors de la suppression d'un élément de la collection
'vntIndexKey contient l'index ou la clé, il est donc
'déclaré en tant que Variant
'Syntaxe: x.Remove(xyz)

mCol.Remove vntIndexKey
End Sub

Public Property Get NewEnum() As IUnknown
'Cette propriété vous permet d'énumérer
'cette collection avec la syntaxe For...Each
Set NewEnum = mCol.[_NewEnum]
End Property

Private Sub Class_Initialize()
'Crée la collection lorsque cette classe est créée
Set mCol = New Collection
End Sub

Private Sub Class_Terminate()
'Détruit la collection lorsque cette classe est détruite
Set mCol = Nothing
End Sub
0