Danke für die Hinweise!
Jetzt habe ich erstmal eine Version die funktioniert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
temp: TListItem;
begin
i := ListView1.ItemIndex;
if (i > 0) then
begin
try
temp := TListItem.Create(ListView1.Items);
temp.Assign(ListView1.Items[i-1]);
ListView1.Items[i-1].Assign(ListView1.Items[i]);
ListView1.Items[i].Assign(temp);
ListView1.Selected := ListView1.Items[i-1];
finally
temp.Free;
end;
ListView1.Invalidate;
end;
end;
Wobei ich natürlich sagen muß, sehr ellegant ist das auf den ersten Blick nicht, da man ja die Daten zweimal im Rechner hin- und herschaufelt und dafür zusätzlichen Speicher braucht.
Gibt es eigentlich eine Alternative (Zeiger/Adressen) womit man das umgehen kann? (Ich hatte ja eigentlich bei meinen Ansatz gehofft, das er bei der ersten Zuweisung praktisch nur den Verweis auf das [i-1]. TListItem-Objekt in Temp speichert, bei der zweiten Zuweisung dann diesen Verweis aus [i-1] mit den Verweis auf [i] überschreibt und letzendlich dann den in temp gespeicherten Verweis auf das vormals [i-1] Objekt in [i] speichert. Habe dazu bei meiner Ausgangsversion auch schon mit ^ und @ rumgespielt, aber irgendwie ist es immer an Compilerfehlern gescheitert.)
MfG
-jryan