![]() |
TlistView Spalten sortieren
Hallo,
wie kann ich in einer TListView die Spalten in einer vorgegeben Reihenfolge sortieren:?: Danke, skorsi |
Re: TlistView Spalten sortieren
In folgendem Beitrag findest Du ein Beispiel zu AlphaSort und OnCompare. Das sollte Dir weiterhelfen.
![]() ...:cat:... |
Re: TlistView Spalten sortieren
Ja aber ich möchte ja nicht den Inhalt der Spalten sortieren
sondern die Spalten selbst in eine best. Reihenfolge bringen. Bsp. Spalten Name, Adresse, Tel.Nr wird zu Tel.Nr, Adresse, Name skorsi |
Re: TlistView Spalten sortieren
Hi skorsi,
tut mir echt leid, aber den kleinen "nebensächlichen" Punkt der Spalten habe ich überlesen :oops: ...:cat:... |
Re: TlistView Spalten sortieren
Ich weiss jetzt nicht welche Delphi Version Du hast, aber seit Delphi 4 hat die TListView die Eigenschaft FullDrag, die einfach auf True setzen und der User kann die Reihenfolge der Spalten beliebig ändern.
...:cat:... |
Re: TlistView Spalten sortieren
Ja aber ich möchte dem User eben nur die Möglichkeit geben auf zwei Arten zu sortieren.
Deswegen habe ich im Menü auch den Punkt Sort by ... |
Re: TlistView Spalten sortieren
Gibt es vielleicht eine andere Komponente bei der ich die Spalten so einfach sortieren kann?
|
Re: TlistView Spalten sortieren
Okay, das war mir nicht klar. Dann kurz ein kleine Einweisung. Wenn Du die Columns im Editor anlegst, dan erhält jede eine eindeutige ID (Vergabe erfolgt automatisch) von 0 bis zur Anzahl der Spalten - 1. Damit kannst Du dann auf die Spalten immer eindeutig zugreifen und deren Index neu setzen.
Als erstes erst einmal die Herstellung der Standardsortierung für X Spalten:
Delphi-Quellcode:
Nun zur bestimmten Neusortierung. Hier musst Du beachten, daß Du die Reihenfolge so festlegst, wie die Spalten erscheinen sollen, ansonsten wird das Ergebnis meist wir. Soll die (Original) 2. Spalten an erste Stelle, die dritte an zweite und die erste Spalte an dritte Stelle also
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; begin for I := 0 to Pred(ListView1.Columns.Count) do ListView1.Columns.FindItemID(I).Index := I; end; aus 0 - 1 - 2 wird 1 - 2 - 0 dann wäre folgender Code der benötigte:
Delphi-Quellcode:
Ich hoffe, daß Dir das jetzt die gewünschte Lösung bringt.
procedure TForm1.Button2Click(Sender: TObject);
begin // ListView1.Columns.FindItemID(ORIGINAL POSITION).Index := NEUE POSITION ListView1.Columns.FindItemID(1).Index := 0; ListView1.Columns.FindItemID(2).Index := 1; ListView1.Columns.FindItemID(0).Index := 2; end; ...:cat:... |
Re: TlistView Spalten sortieren
So sortiert er mir aber leider nur die Überschriften der Spalten.
|
Re: TlistView Spalten sortieren
Sorry, das ist mir gar nicht aufgefallen, ist aber sehr leicht lösbar. Einfach jeweils ans Ende der Codestücke folgende Zeile einfügen und dann solltest Du aber glücklich sein :mrgreen:
Delphi-Quellcode:
...:cat:...
ListView1.Refresh;
|
Re: TlistView Spalten sortieren
Nee sorry das Sortieren läuft nur irgendwie sau langsam ab.
|
Re: TlistView Spalten sortieren
Na gut, dann solltest Du es mal noch wie folgend erweitern - viele Items hast Du eigentlich :shock:
Code:
...:cat:...
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; begin [color=#ff0000]ListView1.Items.BeginUpdate; try[/color] for I := 0 to Pred(ListView1.Columns.Count) do ListView1.Columns.FindItemID(I).Index := I; ListView1.Refresh; [color=#ff0000]finally ListView1.Items.EndUpdate; end;[/color] end; procedure TForm1.Button2Click(Sender: TObject); begin [color=#ff0000]ListView1.Items.BeginUpdate; try[/color] ListView1.Columns.FindItemID(1).Index := 0; ListView1.Columns.FindItemID(2).Index := 1; ListView1.Columns.FindItemID(0).Index := 2; ListView1.Refresh; [color=#ff0000]finally ListView1.Items.EndUpdate; end;[/color] end; |
Re: TlistView Spalten sortieren
Vielen Dank!!!!!!! :-D
Wenn man danach noch einen Refresh aufruft funktioniert alles problemlos!!!!! |
Re: TlistView Spalten sortieren
Super, das freut mich :-) Dann viel Spass weiterhin mit Delphi - auf das wir uns bald wiederlesen.
War ja eine schwere Geburt aber erfolgreich :mrgreen: ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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