Connaitre son index dans une TList...

cs_phoenyx Messages postés 31 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 8 mars 2007 - 17 oct. 2002 à 12:34
cs_phoenyx Messages postés 31 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 8 mars 2007 - 23 oct. 2002 à 10:48
ptit problème :

j'ai une objet (TObjet1) qui contient une TList. Cette TList pointe sur des objets (TObjet2).
TObjet1 sait supprimer les TObjet2 de la TList. Mais comment faire pour que TObjet puisse se supprimer lui-même de la TList ?
Pour info TObjet2 connait son parent (TObjet1).

En fait je voudrais savoir comment TObjet2 pourrait connaitre son Index dans la TList ?
Sachant que l'ordre dans la TList peut varier (Ajout, suppression, changement de place... d'un autre TObjet2)

Merci d'avance

PhoenyX

2 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
17 oct. 2002 à 23:03
Dans les méthode de TObjet2, SELF défini l'adresse de l'objet
Dans TList INDEXOF() donne l'index en fonction de l'objet.

Donc en tout si dans la déclaration de TObjet2 tu ajoutes :
TObjet2= Class (...)
...
Procedure JeMeSupprime;
End;

Procedure TObjet2.JeMeSupprime;
Var index:Integer;
Begin
Index:=MaListe.IndexOf(Pointer(Self));
If Index>=0 Then MaListe.Delete(Index);
End;

Le code ci-dessus devrait fonctionner, tout dépend comment les TObjet2 sont ajoutés à la liste.

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_phoenyx Messages postés 31 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 8 mars 2007
23 oct. 2002 à 10:48
Merci ça marche impec !
PhoenyX
0
Rejoignez-nous