Listview sortieren
Hi,
ich hab eine ListView (vsReport) mit mehreren Spalten. Wenn man jetzt auf eine der Spalten klicke, soll das Programm die Elemente der Spalten absteigend (alles nur zahlen) ordnen ! Ich hab kein Plan, wie ich das machen soll ! Welchen Sortier-Algorithmus soll ich da benutzen ???? devnull |
Re: Listview sortieren
Hallo
Die Onlinehilfe hast du schon gefunden? Unter Listview -> oncolumnclick, oncompare gibts ein Beispiel wie es geht. in deinem Fall kannst du comparetext nicht verwenden, wenn du Zahlenstrings ersetzen willst, sondern erstmal in Zahlen wandeln. Wenn du nicht sehr viele Items hast, wird sich das nicht groß geschwindigkeitsmäßig bemerkbar machen. Mfg Frank |
Re: Listview sortieren
Listview sortieren und dann den 2ten eintrag. Da steht es
|
Re: Listview sortieren
jetzt hab auch ich das begriffen ...
Delphi-Quellcode:
Hoffe, dass es jetzt nich ganz falsch is
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin case ParamSort of 0 : Result := -CompareText(Item1.SubItems.Text,Item2.SubItems.Text); 1 : Result := CompareText(Item1.SubItems.Text,Item2.SubItems.Text); 2 : Result := -CompareText(Item1.Caption,Item2.Caption); 3 : Result := CompareText(Item1.Caption,Item2.Caption); end; end; procedure TForm1.ListeColumnClick(Sender: TObject; Column: TListColumn); var ColumnToSort: Integer; begin ColumnToSort := Column.Index; case ColumnToSort of 1 : begin if posVZ [1] = true then begin Liste.CustomSort(@CustomSortProc, 0); posVZ [1] := false; end else begin Liste.CustomSort(@CustomSortProc, 1); posVZ [1] := true; end; end; else begin if posVZ [2] = true then begin Liste.CustomSort(@CustomSortProc, 2); posVZ [2] := false; end else begin Liste.CustomSort(@CustomSortProc, 3); posVZ [2] := true; end; end; end; end; :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz