Autor Beitrag
Jas DA
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 12.05.03 14:48 
Diese Komponente hat´s mir echt angetan :wink:

Habe jetzt eine ListView mit ca. 20 Elementen. Nun möchte ich diese Elemente in der Reihenfolge, wie sie auch in der ListView stehen, in eine Datei speichern. Wie kann ich alle Elemente durchgehen ? Wie ich einzelne abspeichere, weiß ich selbst, nur es müssen ja alle durchgegangen werden.

Moderiert von user profile iconTino: Titel geändert.
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Mo 12.05.03 14:56 
ausblenden Quelltext
1:
2:
For i := 0 to ListView1.Items.Count-1 do
           WriteLn(ListView1.Items[i]);  //oder wie auch immer du abspeicherst

_________________
If accidentally read, induce vomitting.
UWER
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

SUSE 8.1, XP Home
D7 Prof. , Kylix 3
BeitragVerfasst: Mo 12.05.03 14:56 
Hallo,

der Zugriff auf die Elemete ist eigentlich kein Problem. Das kannst du ganz einfach mit der Property Items machen. Also z.B. so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
    i : integer;
    Item : TListItem;

begin
   for i:=0 to ListView1.Items.Count-1 do begin

       Item := ListView1.Items.Item[i]
       // Item abspeichern
   end;
end;

_________________
Gruß
UWER
Jas DA Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 12.05.03 18:06 
Da habt ihr mich anscheinend etwas falsch verstanden. Ich habe praktisch in der ListView eine Tabelle. Eine Zeile der Tabelle besteht aus:
Caption, SubItem[1], SubItem[2],SubItem[3]

Es gibt nun etwa 20 Zeilen dieser Art. Jetzt soll mein Programm folgendes machen:

Caption1 mit allen Subitems abspeichern
Neue Zeile anfangen
Caption2 mit allen Subitems abspeichern
Neue Zeile anfangen
.....usw.

Da weiß ich nicht, wie ich das machen soll.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 12.05.03 18:51 
[quote]
Caption, SubItem[1], SubItem[2],SubItem[3]
[quote]
sicher ? die Subitems beginnen bei 0 also eher
Caption, SubItem[0], SubItem[1],SubItem[2]

Wenn du nur die Listview speichern willst, kannst du 2 Stringlisten verwenden eine ist die "datei", die andere die "Zeile". Du fügst deine Captions und subitems zur "Zeile" hinzu wenn du mit einer Zeile fertig bist fügst du den Commatext der "Zeilenliste" zur Dateiliste hinzu. Hat den Vorteil, daß du dich um trennzeichen für die Caption und die einzelnen Subitems nicht kümmern brauchst, das machen die Stringlsiten für dich.
das Einladen wäre dann so: Dateiliste laden, jede Zeile einzeln durchgehen und jeweils den item-string als Commatext einer 2. Stringlist zuweisen. die 2. Stringlist gehst du dann item für item durch und füllst deine Listview wieder. Hoffe das war einigermaßen verständlich, Code fürs speichern in etwa so (nich groß getestet):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);
Var SLZeile,SLDatei:Tstringlist;
    item:TListitem;
    i:integer;
begin
  SLDatei:=TStringList.create;
  try
    SLZeile:=TStringList.create;
    try
      for i:=0 to listview1.Items.Count-1 do
        begin
          SlZeile.clear;  //Zeile löschen
          Slzeile.add(Listview1.Items[i].Caption);   //captions und subtimes speichern
          Slzeile.add(Listview1.Items[i].SubItems[0]);
          Slzeile.add(Listview1.Items[i].SubItems[1]);
          //...
          SLDatei.Add(SLzeile.CommaText); //die Zeile als Commatext zur Datei hinzufügen
        end;
    finally
      SLZeile.free;
    end;
    SLDatei.SaveToFile('c:\SLDatei-Test.txt');
  finally
    SLDatei.free;
  end;
end;


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)