Create a form that saves its component state automatically (Views: 28)
Problem/Question/Abstract: I would like to know how to save a forms appearance once it has been changed by a user. Answer: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Memo1: TMemo; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; RadioGroup1: TRadioGroup; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private function FormFilename: string; public constructor Create(aOwner: TComponent); override; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin close end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var fs: TFilestream; begin fs := TFilestream.Create(FormFilename, fmCreate); try fs.WriteComponent(self); finally fs.free; end; end; function TForm1.FormFilename: string; begin Result := ExtractFilePath(ParamStr(0)) + Classname + '.DAT'; end; constructor TForm1.Create(aOwner: TComponent); var fs: TFileStream; fname: string; begin fname := FormFilename; if FileExists(fname) then begin CreateNew(aOwner); fs := TFileStream.Create(fname, fmOpenread or fmShareDenyWrite); try fs.ReadComponent(self); finally fs.free; end; end else inherited Create(aOwner); end; end. |