Ordre dans une listeview par index d'image

Résolu
Bestdoud Messages postés 243 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 28 décembre 2008 - 27 janv. 2006 à 16:58
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 29 janv. 2006 à 21:12
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

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 janv. 2006 à 20:59
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.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
28 janv. 2006 à 12:54
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.
0
Bestdoud Messages postés 243 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 28 décembre 2008
29 janv. 2006 à 19:58
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
0
Bestdoud Messages postés 243 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 28 décembre 2008
29 janv. 2006 à 21:10
ca marche impec meric beaucoup

par contre on voit le passage de pas trié à trié?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 janv. 2006 à 21:12
Oui, absolument.


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