Hallo, kann mir jemand sagen wie man die o.a. Proceduren in einer Komponente implementiert. Ich möchte gern alle Einstellungen die im Objektinspector (oder direkt zugewiesen) vorhanden sind in einen Stream oder in einem File speichern, so wie es viele Komponenten bieten. Natürlich will ich die Daten dann auch wieder mit Loadfrom ... einlesen. Kennt jemand ein Beipsiel?
Announcement
Collapse
No announcement yet.
SaveToStream / SaveToFile
Collapse
X
-
Hallo,
das folgende Beispiel demonstriert das Prinzip. Ein Formular (self) ist in der Lage, mit einem <b>WriteComponent</b>-Aufruf den Zustand aller eingebetteten Client-Controls in eine Datei zu schreiben, so das beim nächsten Programmstart der Inhalt alle Controls wieder aus dieser Datei eingelesen werden kann.
<pre>
<b>unit</b> ReadComponentFrm;
<br>
<b>interface</b>
<br>
<b>uses</b>
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
<br>
<b>type</b>
TForm1 = <b>class</b>(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
ButtonClose: TButton;
<b>procedure</b> ButtonCloseClick(Sender: TObject);
<b>procedure</b> FormCloseQuery(Sender: TObject; <b>var</b> CanClose: Boolean);
<b>private</b>
<font color="#003399"><i>{ Private-Deklarationen }</i></font>
FFilename : <b>String</b>;
<b>public</b>
<font color="#003399"><i>{ Public-Deklarationen }</i></font>
<b>constructor</b> Create(aOwner: TComponent); <b>override</b>;
<b>end</b>;
<br>
<b>var</b>
Form1: TForm1;
<br>
<b>implementation</b>
<br>
<font color="#003399"><i>{$R *.DFM}</i></font>
<br>
<b>constructor</b> TForm1.Create(aOwner: TComponent);
<b>var</b>
fs: TFileStream;
<b>begin</b>
FFilename := ExtractFilePath(ParamStr(0)) + Classname + <font color="#9933CC">'.DAT'</font>;
<b>if</b> FileExists(FFilename) <b>then</b>
<b>begin</b>
CreateNew(aOwner);
fs:= TFileStream.Create(FFilename, fmOpenread <b>or</b> fmShareDenyWrite);
<b>try</b>
fs.ReadComponent(self);
<b>finally</b>
fs.free;
<b>end</b>;
<b>end</b>
<b>else</b>
<b>inherited</b> Create(aOwner);
<b>end</b>;
<br>
<b>procedure</b> TForm1.ButtonCloseClick(Sender: TObject);
<b>begin</b>
Close;
<b>end</b>;
<br>
<b>procedure</b> TForm1.FormCloseQuery(Sender: TObject; <b>var</b> CanClose: Boolean);
<b>var</b>
fs: TFilestream;
<b>begin</b>
fs:= TFilestream.Create(FFilename, fmCreate);
<b>try</b>
fs.WriteComponent(self);
<b>finally</b>
fs.free;
<b>end</b>;
<b>end</b>;
<br>
<b>end</b>.
</pre>
Comment