// Hiermit kann man ein TListview nach bestimmten Spalten sortieren lassen,
// wenn man auf den jeweiligen Spaltenkopf klickt.
// (Falls nicht mit "Column.Index" gearbeitet wird: Die Zählung der Spalten
// beginnt links mit "0")

// Getestet mit D4 unter WinME

const 
  merk: integer = -1; 
 
var 
  aufsteigend: boolean; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
// --- sollte im Objektinspektor eingestellt werden --- 
  Listview1.viewstyle := vsReport; 
  Listview1.sorttype := stNone; 
/// ---------------------------------------------------- 
end; 
 
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): 
  integer; stdcall; 
var s1, s2: string; 
begin 
  if ParamSort = 0 then begin 
    s1 := Item1.caption; 
    s2 := Item2.caption; 
  end else begin 
    s1 := Item1.Subitems[ParamSort - 1]; 
    s2 := Item2.Subitems[ParamSort - 1]; 
  end; 
  Result := (2 * ord(aufsteigend) - 1) * lstrcmp(PChar(s1), PChar(s2)); 
end; 
 
// Beispielaufruf 
procedure TForm1.ListView1ColumnClick(Sender: TObject; 
  Column: TListColumn); 
begin 
  if merk <> Column.Index then aufsteigend := true; 
  ListView1.CustomSort(@CustomSortProc, Column.Index); 
  merk := Column.Index; 
  aufsteigend := not aufsteigend; 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke