[gelöst] Listview: Sortieren

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

[gelöst] Listview: Sortieren

Beitrag von catweasel »

Moin

Ich habe immer noch Probleme mit meinem Listview.
Zur Zeit beiße ich mir die Zähne aus um die Zeilen zu sortieren. Aber selbst wenn ich die Listview-Eigenschaften
"SortColumn" und "SortType" benutze, passiert überhaupt nichts.

Ich habe zum Test mal ein einfaches Programm geschrieben das aus dem Listview mit zwei Spalten (ViewStyle=vsReport) und zwei Buttons besteht:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  listview1.Items.Add;
  Listview1.Items.Item[0].Caption:='a';
  ListView1.Items.Item[0].SubItems.Add('b');
  listview1.Items.Add;
  Listview1.Items.Item[1].Caption:='y';
  ListView1.Items.Item[1].SubItems.Add('x');
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  listview1.SortColumn:=0;
  listview1.SortType:=stboth;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  listview1.SortColumn:=1;
  listview1.SortType:=stboth;
end;

Warum funktioniert selbst das eingebaute Sortieren nicht??

Gruß
Michael
Zuletzt geändert von catweasel am Mo 28. Dez 2009, 13:08, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: Listview: Sortieren

Beitrag von theo »

http://www.lazarusforum.de/viewtopic.ph ... 83&p=17707" onclick="window.open(this.href);return false;

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Listview: Sortieren

Beitrag von catweasel »

theo hat geschrieben:http://www.lazarusforum.de/viewtopic.php?f=9&t=1483&p=17707
Hallo theo

Danke für den Link.
Allerdings verstehe ich noch nicht welche Parameter da mit übergeben werden müssen.
Was muß bei "Lv" und was "index" übergeben werden?

Gruß
Michael

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Listview: Sortieren

Beitrag von catweasel »

Ich hab's bei meinem Beispiel mal mit "SortListView(Listview1,0)" versucht, aber passieren tut nichts...

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  listview1.Items.Add;
  Listview1.Items.Item[0].Caption:='a';
  ListView1.Items.Item[0].SubItems.Add('b');
  listview1.Items.Add;
  Listview1.Items.Item[1].Caption:='y';
  ListView1.Items.Item[1].SubItems.Add('x');
end;
 
procedure TForm1.SortListView(Lv:TListView; Index:integer);
var StrLi: TStringList;
    i: integer;
begin
  StrLi := TStringList.Create;
  if Index = 0 then
    for i := 0 to Lv.Items.Count - 1 do StrLi.AddObject(Lv.Items[i].Caption, Lv.Items[i]) else
        for i := 0 to Lv.Items.Count - 1 do StrLi.AddObject(Lv.Items[i].SubItems[Index - 1], Lv.Items[i]);
  StrLi.Sort;
  for i := 0 to StrLi.count - 1 do Lv.Items[i] := TListItem(StrLi.Objects[i]);
  StrLi.free;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  SortListView(Listview1,0);
end;
Gruß
Michael

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: Listview: Sortieren

Beitrag von theo »

catweasel hat geschrieben:
theo hat geschrieben:http://www.lazarusforum.de/viewtopic.php?f=9&t=1483&p=17707
Allerdings verstehe ich noch nicht welche Parameter da mit übergeben werden müssen.
Was muß bei "Lv" und was "index" übergeben werden?
Ach komm, was muss wohl bei einem Parameter vom Typ TListView übergeben werden...?? :roll:
Index ist die zu sortierende Spalte (bei 0 angefangen).

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: Listview: Sortieren

Beitrag von theo »

catweasel hat geschrieben:Ich hab's bei meinem Beispiel mal mit "SortListView(Listview1,0)" versucht, aber passieren tut nichts...
Du machst Witze oder?

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Listview: Sortieren

Beitrag von catweasel »

theo hat geschrieben:
catweasel hat geschrieben:
theo hat geschrieben:http://www.lazarusforum.de/viewtopic.php?f=9&t=1483&p=17707
Allerdings verstehe ich noch nicht welche Parameter da mit übergeben werden müssen.
Was muß bei "Lv" und was "index" übergeben werden?
Ach komm, was muss wohl bei einem Parameter vom Typ TListView übergeben werden...?? :roll:
Index ist die zu sortierende Spalte (bei 0 angefangen).
Das letzte mal das ich mit ListView gearbeitet habe ist schon Jahre her.
Hilft bitte auf die Sprünge...

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: Listview: Sortieren

Beitrag von theo »

catweasel hat geschrieben: Das letzte mal das ich mit ListView gearbeitet habe ist schon Jahre her.
Was hat denn das damit zu tun?
catweasel hat geschrieben: Hilft bitte auf die Sprünge...
Ist ja alles richtig in deinem Bsp. Aber was soll den passieren? a und y sind ja schon alphabetisch sortiert.

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Listview: Sortieren

Beitrag von catweasel »

theo hat geschrieben:
catweasel hat geschrieben: Das letzte mal das ich mit ListView gearbeitet habe ist schon Jahre her.
Was hat denn das damit zu tun?
catweasel hat geschrieben: Hilft bitte auf die Sprünge...
Ah, ok jetzt habe ich es. Dadurch was ich als Beispiel gewählt habe, habe ich mir selbst ein Bein gestellt.
Danke für die Hilfe :)

Gruß
Michael

Antworten