Ver Mensaje Individual
  #3  
Antiguo 19-11-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por Angel.Matilla Ver Mensaje
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita