Collection de collections

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007 - 22 déc. 2006 à 20:32
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 30 déc. 2006 à 16:32
Bonjour à tou(te)s, je ne sais pas faire de fioritures donc :

Historique :


Une classe (clsClass1).
Une collection de cette classe (clnClass1) nommée mTruc.
Utilisation :



Private Sub Command1_Click()
Dim c1 As New clnClass1
  c1.Add "truc1", 1
  c1.Add "truc2", 2
  '...
End Sub


Ca marche impeccable !


J'intègre la collection clnClass1 dans la classe "clsClass2"
Utilisation :

Private Sub Command1_Click()
Dim c2 As New clsClass2
  c2.mTruc.Add "truc1", 1
  c2.mTruc.Add "truc2", 2
End Sub


Ca marche aussi impeccable !



Question :


Mais voilà, je voudrais faire (et utiliser) une collection de la classe "clsClass2" et là, ça se complique car j'ai toujours des erreurs de compil quand je veux atteindre la collection mTruc au travers de la nouvelle collection. Et pourtant, j'ai essayé plein de choses. La seule chose qui fonctionne est l'utilisation de tableaux mais ça ne me convient pas.


J'espère que je m'explique bien, en tous cas, pour ceux qui suivent encore, je résume :
Je voudrais, en VB6, créer et utiliser une Collection de Collections comme on peut le faire en d'autres langages, est-ce vraiment possible ?


PS : les collections ont été créées avec l'assistant vb6.

4 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
23 déc. 2006 à 12:55
Salut,

Oui c'est possible bien évidemment :
Pour cela il te faut créer une classe 'clsBidule' et une collection 'colBidule' de cette classe
Il faut ensuite créer une autre classe 'clsTruc' dans laquelle tu instancies une collection cls 'colBidule' en propriété de cette dernière classe.
Enfin il faut créer une collection 'colTruc' de la classe 'clsTruc'.

Je te conseil d'utiliser le générateur de classe et de collection de vb pour commencer.
 Fiko ;-)

La reponse vous convient pensez > Accepter < <hr />
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
23 déc. 2006 à 13:56
Merci pour ta réponse mais c'est exactement ce que j'ai fait.
Le problème est sans doute au moment où je veux m'en servir :

Dim cln As New colTruc


  cln.Add ???, MyIndex

Quoi que je mette à la place des ??? (qui représente ma sous collection), j'ai "utilisation incorrecte de la propriété", "type incompatible", ...  ça me gave.
Le seul truc qui marche c'est le tableau :

Dim cln() As New colTruc
etc ...

Et j'ai cherché partout sur le web sans trouver un seul exemple.
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
23 déc. 2006 à 17:34
Bon OK, j'ai trouvé, c'est à cause de l'assistant qui met ces lignes :

    If IsObject(colToto) Then
        Set objNewMember.titi = colToto
    Else
        objNewMember.titi = colToto <--- là est l'erreur
    End If

pour une raison que j'ignore, mon colToto n'est pas accepté comme objet même quand je code :

Dim p As clnEssai1
Dim e As clnEssai
  Set p = New clnEssai1
  Set e = New clnEssai
  p.Add e, 1

J'ai don supprimé ce que l' assistant à mis et l'ai remacé par un simple :
Set objNewMember.titi = colToto

Et ça baigne.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 déc. 2006 à 16:32
Salut,

les classes objets sont très pratiques et rapides à l'exécution et cherche du côté de IUnknown (membre caché), pour voir comment faire...
Regarde ma dernière source sur le zoom, je fais un classe objets (classe de collection)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous