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:
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;
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
aus 0 - 1 - 2
wird 1 - 2 - 0
dann wäre folgender Code der benötigte:
Delphi-Quellcode:
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;
Ich hoffe, daß Dir das jetzt die gewünschte Lösung bringt.
...
...