implementation uses Contnrs; {$R *.dfm} // fonction de tri pour TLabel // le tri est effectué sur le Caption des labels // renvoi -1 si Item1 < Item2 // renvoi 0 si Item1 = Item2 // renvoi 1 si Item1 > Item2 function MySortFunc(Item1, Item2: Pointer): Integer; var Lbl1: TLabel absolute Item1; Lbl2: TLabel absolute Item2; begin Result := 0; if (Item1 = nil) or (Item2 = nil) then Exit; Result := CompareText(lbl1.Caption, lbl2.Caption); // pour un résultat par ordre décroissant activer la ligne suivante: //Result := Result * -1; end; procedure TMainform.Button1Click(Sender: TObject); var obList: TObjectList; I: Integer; begin Memo1.Clear; obList := TObjectList.Create; try for I := 0 to 7 do obList.Add(TLabel(FindComponent('Label'+IntToStr(I+1)))); Memo1.Lines.Add('List avant tri:'); for I := 0 to 7 do Memo1.Lines.Add(TLabel(obList.Items[I]).Caption); obList.Sort(MySortFunc); Memo1.Lines.Add(''); Memo1.Lines.Add('List après tri:'); for I := 0 to 7 do Memo1.Lines.Add(TLabel(obList.Items[I]).Caption); finally obList.Free; end; end;
@+ Cirec
4 nov. 2017 à 21:59
merci pour ta réponse, j'utilise Delphi 2005,
Alors, comment faire j'ai un problème de déclaration
TObjectList<T> ; TComparer<T>
cordialement