IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Synchroniser 1 TListview avec 1 TList après 1 Tri


Sujet :

Langage Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut Synchroniser 1 TListview avec 1 TList après 1 Tri
    Bonjour,

    j'ai le problème suivant :
    1- J'ai un Listview qui contient les élements (dans cet ordre d'index) : C, B, D, A.
    2- J'ai une liste qui contient 4 pointeurs vers une structure de type record et qui est ordonnée suivant le même ordre que le Listview.

    => Si je déplace un Item du listview, un simple MyList.Move( .. ) dans l'évenement Ondragdrop modifie également l'ordre dans le Tlist. OK.

    Mais, si je trie le Listview avec les fonctions OncolumnClick et surtout OnCompare, je n'arrive pas à rétablir l'ordre final dans le TList, même avec les fonctions myList.move ou myList.Exchange car il semble que dans le Oncompare, les éléments sont comparés selon leur index initial et non au fur et à mesure des permutations successives, le tri final semblant alors s'exécuter d'un bloc.

    Précisions :
    - je n'ai pas de champ commun aux deux structures (du genre 'nom') et n'en souhaite pas.
    - il aurait été beaucoup plus simple de n'avoir qu'une seule structure de données genre record ou classe au lieu d'essayer de gérer deux ensembles. Je le sais et cela fera l'objet d'une prochaine modif, mais je désire tout de même résoudre le présent cas d'étude ...

    Peut être est-ce que j'oublie quelque chose de plus simple ? Je l'espère en tout cas.
    Merci de vos réponses.

    A+
    Consultez :
    - La F.A.Q Delphi + Les Cours Delphi
    - La sélection des Freewares Delphi

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Si tu n'as qu'un pointeur dans ta TList, pourquoi ne pas le stocker tout simplement dans la propriété Data de tes TListItem ? Pas la peine de faire une structure de données.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut
    Effectivement, ça marche : il suffit après de rechercher l'index par : MyList[MyList.indexof(ListItem.Data)];

    Cela dit, on utilise un champ commun aux deux structures Listview et TList et on effectue une recherche dans le TList suite au tri du Listview. C'est commode mais ce n'est pas exactement la même chose que de "synchroniser" l'ordre des élements dans les deux listes simultanément...

    A+
    Consultez :
    - La F.A.Q Delphi + Les Cours Delphi
    - La sélection des Freewares Delphi

  4. #4
    Membre régulier Avatar de fs999
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 99
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Tu peux aussi ne mettre que l'index de ta TList dans Data. Il faut juste convertir un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ListItem.Data := TObject(i);
     
    MyList[Integer(ListItem.Data)]
    A+
    On ne me la fait pas à moi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Synchronisation] comment et avec quels outils ?
    Par Alec6 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/02/2006, 08h23
  2. Réponses: 3
    Dernier message: 10/02/2006, 15h31
  3. Réponses: 2
    Dernier message: 08/12/2005, 15h34
  4. liste fichiers (TListView) avec icones
    Par pjb dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2005, 09h06
  5. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo