Réponse acceptée !
Pour effacer : ListView->Clear()
Le code suivant ser à trier les colonnes.
//---------------------------------------------------------------------------
// Sélection de la colonne ListView1 à trier
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,TListColumn *Column)
{
if(numCol==Column->Index)
{
if(cclick==1) cclick = 0; // Trie décroissant
else cclick = 1; // Trie croissant
}
numCol = Column->Index;
ListView1->CustomSort(CustomSortProc,cclick);
}
//---------------------------------------------------------------------------
// Mise à jour ListView1 - Trie des infos du Rep sélectionné
//---------------------------------------------------------------------------
int __stdcall CustomSortProc(long Item1, long Item2, long ParamSort)
{
String n1;
String n2;
unsigned long long val1;
unsigned long long val2;
TListItem *i1,*i2;
i1=(TListItem*)Item1;
i2=(TListItem*)Item2;
switch(numCol)
{
// trie sur nom de l'entrée
case 0 : n1 = i1->Caption.LowerCase();
n2 = i2->Caption.LowerCase();
break;
// trie sur le type de l'entrée plus nom de l'entrée
case 1 : n1 = i1->SubItems->Strings[numCol-1]+i1->Caption.LowerCase();
n2 = i2->SubItems->Strings[numCol-1]+i2->Caption.LowerCase();
break;
// trie sur L'ID
case 2 : val1 = atol(i1->SubItems->Strings[numCol-1].c_str());
n1.sprintf("%09ul",val1);
val2 = atol(i2->SubItems->Strings[numCol-1].c_str());
n2.sprintf("%09ul",val2);
break;
// trie sur la taille
case 3 : val1 = atol(i1->SubItems->Strings[numCol-1].c_str());
n1.sprintf("%09ul",val1);
val2 = atol(i2->SubItems->Strings[numCol-1].c_str());
n2.sprintf("%09ul",val2);
break;
}
if (n1==n2) return 0;
if (ParamSort)
{
if(n1>n2) return 1;
if (n1<n2) return -1;
}
else
{
if(n1>n2) return -1;
if (n1<n2) return 1;
}
return 0;
}