Bonjour,
je suis en train de faire un test avec des collections.
voilà, j'ai une classe "obj" toute simple sans truc particulier.
j'ai par exemple une methode "truc()".
Ensuite je veux créer une classe "Dossier" qui devra stocker des "obj".
et etre capable de m'en retrouner une collection. un peu comme le Folder.Files du FSO Folder etant le Dossier et Files me retourne une collection de file (obj chez moi)
voici donc comment j'ai commencé (je debute avec les collection)
code de la classe dossier
voilà jusque là ca marche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 ' données membres Private lstobj As Collection ' constructeur Private Sub Class_Initialize() Set lstobj = New Collection End Sub ' destructeur Private Sub Class_Terminate() Set lstobj = Nothing End Sub ' membres classiques... d'accés à la collection Public Property Get Item(AValue As Variant) As Obj Set Item = lstobj.Item(AValue) End Property Public Property Get Count() As Long Count = lstobj.Count End Property Friend Sub Append(ByRef o As Obj) lstobj.Add o ' ajoute dans la collection End Sub ' pour generer des membres... Public Sub generer(ByVal n As Long) Dim x As Obj For i = 1 To n Set x = New Obj x.nom = "généré " & i 'un exemple x.v = Sin(i) 'un exemple lstobj.Add x Next End Sub 'Public Function GetObjs() as ....? '??? 'End function
dans mon form, je fais ceci :
Premiere question, comment je fait mon "GetObjs" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim d As Dossier Set d = New Dossier d.generer 5 For Each bidule In d.GetObjs bidule.truc() Next
Deuxieme question, est-ce que je suis obligé de passer par un "GetObjs", n'est-il pas possible d'avoir un truc qui marche avec "For Each bidule in d" ?
pour info (mais ca ne sert a rien dans l'exemple) voici le code de la classe obj :
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 'code bidon pour l'exemple Public nom As String Public x As Long Public Function truc() As Long Debug.Print "truc! sur" & nom truc = 2 * x End Function Public Property Get v() As Long v = x End Property Public Property Let v(a As Long) x = Abs(a) End Property
Partager