Announcement

Collapse
No announcement yet.

Änderungen an TForm während der Laufzeit speichern und beim Laden wieder herstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Änderungen an TForm während der Laufzeit speichern und beim Laden wieder herstellen

    Hi,

    Ich möchte meinen auf dem TForm befindlichen Labels beliebige Texte zuweisen und zwar zur Laufzeit. Diese Texte sollen gespeichert und beim Laden wieder herstellen werden.

    Ich will sie nicht mehr in der Datenbank speichern, sondern in einem Stream oder so ähnlich. Ich weiß das es eine Methode gibt die ganze Forminhalte laden und speichern kann. Ich weiß aber nicht wie sie heißt.

    Gruß

    Thorsten

  • #2
    Hallo,

    ein Formular 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. Somit speichert das folgende Beispielprojekt alle Einträge im TEdit, TMemo und die Auswahl einer TCheckBox - nur um einige Beispiele zu nennen.
    <pre>
    unit ReadComponentFrm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;

    type
    TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    ButtonClose: TButton;
    procedure ButtonCloseClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    private
    { Private-Deklarationen }
    FFilename : String;
    public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    constructor TForm1.Create(aOwner: TComponent);
    var
    fs: TFileStream;
    begin
    FFilename := ExtractFilePath(ParamStr(0)) + Classname + '.DAT';
    if FileExists(FFilename) then
    begin
    CreateNew(aOwner);
    fs:= TFileStream.Create(FFilename, fmOpenread or fmShareDenyWrite);
    try
    fs.ReadComponent(self);
    finally
    fs.free;
    end;
    end
    else
    inherited Create(aOwner);
    end;

    procedure TForm1.ButtonCloseClick(Sender: TObject);
    begin
    Close;
    end;

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    var
    fs: TFilestream;
    begin
    fs:= TFilestream.Create(FFilename, fmCreate);
    try
    fs.WriteComponent(self);
    finally
    fs.free;
    end;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X