Lo primero que haremos es declarar dos variables globales:
var
Form1: TForm1;
UltimoSorteo: Integer; //guardará el dato de la última ordenación;
Ascendente: Boolean; //verificaremos si la ordenación es Ascendente o no;
Luego debemos inicializar las variables que hemos creado:
procedure TForm1.FormCreate(Sender: TObject);
begin
UltimoSorteo := -1; //no hay ninguno (también devuelve 1 y 0);
Ascendente := True; //lo iniciamos de manera ascendente;
end;
Ahora, en el evento OnColumnClick del ListView colocaremos el siguiente code:
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
if Column.Index = UltimoSorteo then
Ascendente := Not Ascendente
else
UltimoSorteo := Column.Index;
TListView(Sender).CustomSort(@SortByColumn, Column.Index);
end;
Por último debemos crear una función que hará la ordenación de los datos de acuerdo a la columna:
function SortByColumn(Item1, Item2: TListItem; Data: integer):
integer; stdcall;
begin
if Data = 0 then
Result := AnsiCompareText(Item1.Caption, Item2.Caption)
else
Result := AnsiCompareText(Item1.SubItems[Data-1],
Item2.SubItems[Data-1]);
if not Ascendente then Result := -Result;
end;
Pues ya con eso pueden ordenar los datos de una columna de un listview sin importar el tipo de contenido que tenga, Nota: Probado con Delphi 7.
Que lo disfruten, Saludos.


 
	 
					 
			
			 
				
				
			
 
				
				
			
 
				
				
			
 Probado con Turbo Delphi
 Probado con Turbo Delphi  
				
				
			 
				
				
			








