Tri dans un TListView

Résolu
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005 - 31 oct. 2005 à 23:34
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005 - 1 nov. 2005 à 10:35
Bj
Je souhaite savoir comment effectuer un tri de string representant des valeurs numériques dans un tableau TListView

6 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
1 nov. 2005 à 09:44
Tu définis l'évenement Onmcompare du ListView où tu mets:
<hr size= "2" width="100%"> procedure TForm1.LVCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
Compare : = StrToInt(Item1.Caption) - StrToInt(Item2.Caption);
end;
<hr size="2" width="100%">Et tu définis la propriété SortType à stData.

@ ++
Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
3
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005
1 nov. 2005 à 10:35
J'ai mis la propriété SortType = StBoth et ça Fonctionne merçi!!!!!!
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
1 nov. 2005 à 10:09
J'ai un doute:



t'as de problème de débordement avec ce code?



si les deux integer valent low(Integer) par exemple?




sinon tu peux faire une trucs genre:

(dans mon cas avec des TCoDeSysVar sur le nom, pour toi fait des inttostr comme indiqué par Florent)



<hr size="2" width="100%">

if (TCoDeSysVar(Item1).VarFullName >

TCoDeSysVar(Item2).VarFullName ) then begin



Result := 1;



end else

if (TCoDeSysVar(Item1).VarFullName <

TCoDeSysVar(Item2).VarFullName ) then begin



Result := -1;



end else begin



Result := 0; //same



end;

<hr size="2" width="100%">


Loda
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
1 nov. 2005 à 10:11
PS: je voulais dire: si un vaut low(integer) et l'autre high(integer). dsl.



(y a de fonction edit ici??)


Loda
0

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

Posez votre question
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
1 nov. 2005 à 10:24
Non, il n'y a pas de débordement, mais cela crée un bug quand même, il dit que MaxInt < Low(Integer): pas très logique !!!!
C'est vrai que ce serais mieux de faire un test avec un if ou un IfThen()

@ ++ Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005
1 nov. 2005 à 10:26
Merci pour ta réponse.
Je crois avoir fais exactement ce que tu me dis mais ça ne fonctionne pas alors je vais etre plus explicite dans ma demande.
Je remplis la propriété Caption d'un TListView d'élément de type String répresentant de montant de facture et je souhaite que ces montants soint classés du plus petit au plus grand....
Merci pour tes lumières!!!!!
0
Rejoignez-nous