Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Items aus TListView in neue TListItems kopieren


schitho - Sa 26.02.05 03:50
Titel: Items aus TListView in neue TListItems kopieren
Hi,

wie kann ich die Items aus der ListView in eine neue Liste mit Items kopieren?

Ich hab es so probiert:

Delphi-Quelltext
1:
2:
3:
4:
5:
var
  Liste : TListItems;
:
:
Liste.Assign(listview1.Items);


Doch da bekomm ich eine Exception. Was mach ich falsch?

Gruß
Thomas


opfer.der.genauigkeit - Sa 26.02.05 04:30

Hi,

So dürft's gehen.


Delphi-Quelltext
1:
  ListView2.Items := ListView1.Items;                    


//Edit: Oder so.. :)

Delphi-Quelltext
1:
  ListView2.Items.Assign(ListView1.Items);                    


schitho - So 27.02.05 00:46

Danke für die Antwort.

Aber ich hab nur ein ListView. :(

Wie kann ich nun alle Items auf einmal kopieren?

Gruß
Thomas


schitho - Mo 28.02.05 12:46

Gibt es vielleicht jemanden, der mir sonst eine Möglichkeit aufzeigen könnte, wie ich die Werte in den Items speichern könnte? Array? Stringliste?

Hintergrund:
In meiner Listview verwende ich mehrere Spalten und eine Checkbox. Damit ich erkennen kann, ob jemand einen Eintrag geändert hat, wollte ich einfach die Items in eine neue Item-Liste kopieren. Dies funktioniert leider nicht (siehe weiter oben).

Nun suche ich nach einer anderen Möglichkeit, wie ich die Inhalte der Spalten pro Zeile, sowie den dazugehörigen Checkbox-Zustand (true oder false) speichern kann.

Was empfehlt ihr?

Vielen Dank

Gruß
Thomas


vsti - Mo 28.02.05 13:36

mit ner schleife sollte es doch gehen...


Delphi-Quelltext
1:
2:
  for i := 0 to ListView1.Items.Count-1 do
    Liste.Add.Assign(ListView1.Items.Item[i]);


greez


schitho - Mo 28.02.05 23:00

Bei dem Code bekomm ich auch eine Exception :cry:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  Liste : TListItems;

procedure TFAutostart.ItemsCopy;
var
  i: Integer;
begin
  for i := 0 to ListView1.Items.Count - 1 do
    Liste.Add.Assign(ListView1.Items.Item[i]);
end;



Sobald ich die Procedure aufrufe erhalte ich die Exception.

Was mach ich blos falsch?

Gruß
Thomas