Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Speichern der gesamten TLISTVIEW-Einträge... (https://www.delphipraxis.net/1838-speichern-der-gesamten-tlistview-eintraege.html)

thomasdrewermann 27. Dez 2002 00:03


Speichern der gesamten TLISTVIEW-Einträge...
 
HI,
kennt irgendjemand eine Routine zum speichern des Inhalts eines gesamten TLISTVIEW?

MFG Thomas

sakura 27. Dez 2002 00:19

Zwei Routines zum Laden und Speichern. Ungetestet, sollte aber funktionieren.
Delphi-Quellcode:
procedure LoadListView(LV: TListView; aFile: string);
var
  I: Integer;
  Item: TListItem;
begin
  with TStringList.Create do
  try
    LoadFromFile(aFile);
    I := 0;
    while I < Count do
    begin
      Item := LV.Items.Add:
      Item.Caption := Strings[I];
      Inc(I);
      if I = Count then
        Break;
      Item.SubItems.CommaText := Strings[I];
      Inc(I);
    end;
  finally
    Free;
  end;
end;

procedure SaveListView(LV: TListView; aFile: string);
var
  I: Integer;
begin
  with TStringList.Create do
  try
    for I := 0 to Pred(LV.Items.Count) do
    begin
      Add(LV.Items[I].Caption);
      Add(LV.Items[I].SubItems.CommaText);
    end;
    SaveToFile(aFile);
  finally
    Free;
  end;
end;

Luckie 27. Dez 2002 00:28

Oder so:
Delphi-Quellcode:
function ListViewSaveToFile(ListView: TListView; AFileName: string): Boolean;
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(AFileName, FmCreate or fmShareDenyWrite);
  try
    fs.WriteComponentRes(ListView.Name, ListView);
  finally
    fs.Free;
  end
end;

function ListViewLoadFromFile(ListView: TListView; AFileName: string): Boolean;
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(AFileName, FMOpenRead or fmShareDenyNone);
  try
    fs.ReadComponentRes(ListView);
  finally
    fs.Free;
  end
end;

thomasdrewermann 27. Dez 2002 23:28

Hi,
danke erstmal für die Lösung. Ich hab sie gerade getestet.

Da kommt ein Fehler:
"Kann die Datei nicht öffnen"...bla,bla ect.

Der Fehler wird bei der TFileStrem.Create(...); procedure ausgelöst.

MFG
Thomas

Luckie 27. Dez 2002 23:37

Stimmt der Dateipfad? Bei mir hat es bis jetzt immer gut geklappt.

thomasdrewermann 28. Dez 2002 00:00

Ich hab beim oncreate ereignis einfach
Code:
ListviewSaveTofile('C:\test.dat');
geschrieben.

thomasdrewermann 28. Dez 2002 00:14

Ich habe mein Problem gerade gelöst, bzw. ich bin auf dem besten Weg.
Ich denke zu dem Zeitpunkt wenn das OnCreate Ereignis aufgerufen wird wurde der Listview noch garnicht erstellt.

Ich habs mit Buttons gelöst.

MFG
Thomas

Daniel B 28. Dez 2002 01:12

Machs doch im OnSohw, da ist die LV schon Created.

Grüsse, Daniel :xmas:

thomasdrewermann 28. Dez 2002 01:33

Ich habs mir gerade überlegt.
Ich könnte auch nen Timer nehmen...

Christian Seehase 28. Dez 2002 02:44

Moin Thomas,

Zitat:

Ich denke zu dem Zeitpunkt wenn das OnCreate Ereignis aufgerufen wird wurde der Listview noch garnicht erstellt.
Doch, sonst könntest Du im OnCreate des Formulares keine Einstellungen am Listview vornehmen.
Wenn der ListView dem Formular untergeordnet ist, dann existiert er schon. Es ist, im Prinzip, nichts weiter als ein Feld in der Klasse des Formulares.

Das OnCreate wird aufgerufen, nachdem der Konstruktor der Klasse (z.B. TForm1) abgearbeitet wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz