Einzelnen Beitrag anzeigen

LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Listview nach Datum sortieren

  Alt 26. Nov 2017, 03:07
Beispiel mit Spalte 0 = Datum im gültigen Format, der Rest normale Zeichenketten.
Das geht sicher noch schöner.
Ist jetzt einfach nur aus einer existierenden Unit rauskopiert und unnötiges Zeug wurde gelöscht. Ist also nicht auf Funktionalität getestet.

Delphi-Quellcode:
procedure TForm1.ListViewColumnClick(Sender: TObject; Column: TListColumn);
begin
 ListViewColumnToSort := Column.Index;
end;


procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
 TextToSort1, TextToSort2: string;
begin
 if ListViewColumnToSort = 0 then
  begin
   TextToSort1 := Item1.Caption;
   TextToSort2 := Item2.Caption;
  end
 else
  begin
   TextToSort1 := Item1.SubItems[ListViewColumnToSort - 1];
   TextToSort2 := Item2.SubItems[ListViewColumnToSort - 1];
  end;

 case (Sender as TListView).Columns[ListViewColumnToSort].Tag of
  0: // DateTime
   begin
    Compare := 0;

    if StrToDateTime(TextToSort1) > StrToDateTime(TextToSort2) then
     Compare := Trunc(StrToDateTime(TextToSort1) - StrToDateTime(TextToSort2)) + 1
    else if StrToDateTime(TextToSort1) < StrToDateTime(TextToSort2) then
     Compare := Trunc(StrToDateTime(TextToSort1) - StrToDateTime(TextToSort2)) - 1;
   end;
 else // Strings
  Compare := AnsiCompareText(TextToSort1, TextToSort2);
 end;
end;

Geändert von LTE5 (26. Nov 2017 um 03:12 Uhr)
  Mit Zitat antworten Zitat