Hola.
Cita:
Empezado por Angel.Matilla
Tengo un TListView similar a este:
Titular Dato1 % Dato2
Titular1 1250 45,45% 10
Titular2 1500 54,55% 11
que quiero ordenar por la última columna para lo que estoy usando un método de burbuja con este código:
|
Como una mejor alternativa al método de ordenamiento que mencionas, te pongo un ejemplo que ordena por la columna sobre la que se hizo click:
Código PHP:
...
int inxSort = 0;
// OnCompare
void __fastcall TForm1::ListView1Compare(TObject *Sender, TListItem *Item1,
TListItem *Item2, int Data, int &Compare)
{
if (inxSort == 0) // Titular
Compare = strcmp(Item1->Caption.c_str(), Item2->Caption.c_str());
else { // Dato1 - % - Dato2
Double a = atof(Item1->SubItems->Strings[inxSort-1].c_str());
Double b = atof(Item2->SubItems->Strings[inxSort-1].c_str());
Compare = a < b ? -1 : (a > b ? 1 : 0);
}
}
// OnColumnClick
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
inxSort = Column->Index;
ListView1->AlphaSort();
}
Dada la descripción que diste arriba, supuse los items: "Dato1", "%" y "Dato2" de tipo numéricos. El ordenamiento se realiza de forma ascendente.
Saludos