![]() |
Erweitertes Sortieren einer ListView
Hi,
Ich habe den ![]() Außerdem fehlte in dem Code der Code-Lib eine Sicherheitskontrolle, ob der entsprechende SubItems Eintrag überhaupt vorhanden ist! Der Code den ich geschrieben habe arbeitet mit der Tag-Eigenschaft der ListView, wobei negative Werte eine umkehrung der Sortier-Reihenfolge bewirken.
Delphi-Quellcode:
procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin If TListView(Sender).Tag = (Column.Index + 1) then TListView(Sender).Tag := - (Column.Index + 1) else TListView(Sender).Tag := (Column.Index + 1); TListView(Sender).AlphaSort; end; procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); var SortData1, SortData2 : String; ColIndex : Integer; Ascending : Boolean; begin ColIndex := TListView(Sender).Tag; If ColIndex < 0 then begin Ascending := true; ColIndex := -ColIndex; end else Ascending := false; dec(ColIndex); case ColIndex of // Zum sortieren von besonderen Spalten (nur ein Beispiel): MySpecialRowIndex : Compare := MySpecialCompare(Item1, Item2); else If ColIndex = 0 then SortData1 := Item1.Caption else If (Item1.SubItems.Count >= ColIndex - 1) then SortData1 := Item1.SubItems[ColIndex - 1] else SortData1 := ''; If ColIndex = 0 then SortData2 := Item2.Caption else If (Item2.SubItems.Count >= ColIndex - 1) then SortData2 := Item2.SubItems[ColIndex - 1] else SortData2 := ''; Compare := CompareText(SortData1, SortData2); end; If Ascending then Compare := - Compare; end; |
AW: Erweitertes Sortieren einer ListView
Ich habe den Code noch etwas ausgebessert und die Möglichkeit zum speziellen Sortieren gewisser Spalten hinzugefügt (z.B. Integer-Spalten etc.)
MFG Björn Zeutzheim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz