So wie es aussieht ist das Problem für TFrames nicht zu lösen (Es existiert keine Funktion CreateNew für TFrames).
Allerdings habe ich (im Internet an andere Stelle) eine Lösung des Problems für TForm gefunden.
Für den den es interessiert:
Ein normales Formular, das beim Erzeugen die Eigenschaftswerte der Komponenten jedoch von Datei liest, sofern das Formular zuvor schon einmal abgespeichert wurde.
Der Vorteil liegt darin, daß wenn das Formular um weitere Objekte ergänzt wird alles automatisch gespeichert wird.
Gut geeignet als Ersatz für ini-Dateien da weniger Schreibarbeit, von der geringeren Fehleranfälligkeit ganz zu schweigen.
Delphi-Quellcode:
unit AutoSpeichern;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TAutoSpeichernForm =
class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Label1: TLabel;
Edit2: TEdit;
private
public
constructor Create(AOwner: TComponent);
override;
procedure BeforeDestruction;
override;
end;
var
AutoSpeichernForm: TAutoSpeichernForm;
implementation
{$R *.DFM}
constructor TAutoSpeichernForm.Create(AOwner: TComponent);
var
datei:
string;
begin
datei:= ExtractFilePath(Application.ExeName) + ClassName + '
.fs';
if FileExists(datei)
then
begin
CreateNew(AOwner, 0);
with TFileStream.Create(datei, fmOpenRead
or fmShareDenyWrite)
do
try
ReadComponent(Self);
finally
Free;
end;
end
else
inherited Create(AOwner);
end;
procedure TAutoSpeichernForm.BeforeDestruction;
var
datei:
string;
begin
inherited;
datei:= ExtractFilePath(Application.ExeName) + ClassName + '
.fs';
with TFileStream.Create(datei, fmCreate)
do
try
WriteComponent(Self);
finally
Free;
end;
end;
end.