Ordre dans une listeview par index d'image

[Résolu]
Signaler
Messages postés
243
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
28 décembre 2008
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
Bonjour,

je voudrais savoir si on peu trier les items dans une listview par ordre alphabétique et par index d'icones en même temps

pour l'ordre alphabétique c'est bon mais par ordre d'index icone je sais pas

5 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Il suffit d'inverser les comparaisons ci-dessus. D'abord les ItemIndex des images puis, s'il y a égalité, trier par ordre alphabétique.

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
//ordonner selon les propriétés Imageindex
if Item1.ImageIndex > Item2.ImageIndex then
    Compare :=  1
else
 if  Item1.ImageIndex < Item2.ImageIndex then
      Compare : = -1
else
      Compare :=  0;

  //Si les deux ItemIndex sont &#233;gaux
 if  Compare  = 0then
//Comparaison sans tenir des majuscules/minuscules
    Compare :=  AnsiCompareText(Item1.Caption, Item2.Caption);

 end ;


<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Dans un premier temps, faire un double clic sur l'évènement OnCompare du composant TListView et ajouter le code ci-dessous :

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
//Comparaison sans tenir des majuscules/minuscules
  Compare :=  AnsiCompareText(Item1.Caption, Item2.Caption);
  //Si les deux &#233;lements sont &#233;gaux, examiner leur propri&#233;t&#233;
  //ImageIndex
 if  Compare  = 0then
begin
//ordonner selon les propri&#233;t&#233;s Imageindex
if Item1.ImageIndex > Item2.ImageIndex then
//et permuter
      Compare :=  1;
   end ;
end;

Dans le code ci-dessus, le tri se fait sur le contenu de la premi&#232;re colonne (propri&#233;t&#233; Caption).

Puis d&#233;clencher le tri &#224; la demande :

procedure TForm1.btnSortListViewClick(Sender: TObject);
begin
  ListView1.AlphaSort;
end;


<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
243
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
28 décembre 2008

En fait j'ai 4 icones donc d'index 0 à 3

je voudrais que tous les index 0 soit en premiers dans la liste
ensuite tous les index 1
puis les index 2
et enfin les index 3

et que chaque groupe soit par ordre alphabétique
Messages postés
243
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
28 décembre 2008

ca marche impec meric beaucoup

par contre on voit le passage de pas trié à trié?
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Oui, absolument.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.