Einzelnen Beitrag anzeigen

jryan

Registriert seit: 25. Nov 2003
19 Beiträge
 
Delphi 7 Architect
 
#4

Re: 2 Einträge in einem TListeView tauschen

  Alt 16. Sep 2004, 11:57
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
  Mit Zitat antworten Zitat