Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView "extern" sortieren (https://www.delphipraxis.net/17046-listview-extern-sortieren.html)

Yheeky 27. Feb 2004 11:52


ListView "extern" sortieren
 
Hi,

ich habe mit folgendem Code die Sortierung für meine ListView bewerkstelligt:
http://www.swissdelphicenter.ch/de/showcode.php?id=1103

Nun möchte ich bei einem Button.Click-Ereignis eine Spalte absteigend sortieren lassen. Wie kann ich das machen?
Ich habe den Anruf ListView.CustomSort(@CustomSortProc, Spalte); probiert, jedoch wird die Spalte dann nur aufsteigend sortiert.

Gruß Yheeky

M-O-D 27. Feb 2004 13:03

Re: ListView "extern" sortieren
 
Hi,

Schau dir mal die letzte Zeile in dem Code an...
nach dem Aufruf der
Delphi-Quellcode:
ListView.CustomSort(@CustomSortProc, Spalte);
passiert nochwas, nämlich :
Delphi-Quellcode:

{ Set the sort order for the column} 
  LvSortOrder[Column.Index] := not LvSortOrder[Column.Index];
Das ändert bei jedem Klick die Sortierreihenfolge. Das muss Du auch beim Aufruf mit dem Button mit reinschreiben...

Gruß :hi:

Yheeky 27. Feb 2004 22:11

Re: ListView "extern" sortieren
 
Die Sortierreihenfolge soll ja nicht verändert werden. Diese soll immer absteigend sein...

Markus K. 27. Feb 2004 22:43

Re: ListView "extern" sortieren
 
Hallo Yheeky,
du kannst es ja mal mit diesem Code versuchen.

Delphi-Quellcode:
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
  Result := -CompareText(Item1.Caption,Item2.Caption);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.CustomSort(@CustomSortProc, Spalte);
end;
Ein + vor CompareText sollte aufsteigend sortieren, ein - absteigend.

Tschüß Markus

Yheeky 28. Feb 2004 10:00

Re: ListView "extern" sortieren
 
In deinem Code bringt die Variable ParamSort doch überhaupt nichts, oder seh ich das falsch?! Die wird in der Funktion ja überhaupt nicht behandelt. Geht demzufolge auch leider nicht bei mir.

Habe die Funktion jetzt so geändert. Nun funktioniert´s:

Code:
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
if ParamSort = 0 then
Result := -CompareText(Item1.Caption,Item2.Caption)
  else
Result := -CompareText(Item1.SubItems[ParamSort], Item2.SubItems[ParamSort]);

end;
Danke trotzdem!

Gruß Yheeky

dopeline 9. Mär 2004 16:25

Re: ListView "extern" sortieren
 
Woran liegt es, dass nur die erste spalte (Column[0]) bei einem klick drauf sortiert wird?

eigentlich sollte es doch bei allen funktionieren! ich habe den code unverändert vom obigen link (swissdelphicenter) genommen....


Gruß, dopeline


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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