Komponenten speichern/laden
Über die Methode WriteComponentRes bzw. ReadComponentRes eines Streams kann man Komponenten (TComponent) bequem in eine Datei speichern und aus einer Datei laden. So lassen sich bequem Eigenschaftswerte wiederherstellen.
procedure ComponentSaveToFile(Component: TComponent; const FileName: String); var fs: TFileStream; begin fs := TFileStream.Create(FileName, fmCreate); try fs.WriteComponentRes(Component.Name, Component); finally fs.Free; end; end; procedure ComponentLoadFromFile(Component: TComponent; const FileName: String); var fs: TFileStream; begin fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try fs.ReadComponentRes(Component); finally fs.Free; end; end;
Folgendes Beispiel zeigt, wie man ein Edit-Feld in der Datei C:Test.txt speichert und später wieder lädt. Als erster Parameter muss die Komponente übergeben werden, als zweiten den Dateinamen inkl. Pfad.
procedure TForm1.Button1Click(Sender: TObject); begin ComponentSaveToFile(Edit1,'C:Test.txt'); end; procedure TForm1.Button2Click(Sender: TObject); begin ComponentLoadFromFile(Edit1,'C:Test.txt'); end;
Auf diese Weise können alle Komponenten auf dem Formular gesichert werden:
For t:=0 to ComponentCount-1 do ComponentSaveToFile(Components[t],'C:Test'+IntToStr(t+'.txt');
In diesem Beispiel wird für jede Komponente eine extra Datei angelegt.Benutzt man anstatt ComponentCount, ControlCount und statt Components, Controls, werden nur Steuerelemente gespeichert.Durch wiederholten Aufruf von WriteComponentRes können natürlich auch mehrere Komponenten in der gleichen Datei gespeichert werden.