AW: Fensterpositionen mit Hilfe einer Unit speichern
Nutze seit Jahren dashier http://torry.net/vcl/forms/savers/rg.zip (bzw. eine von mir angepasste Form).
Auf der Seite http://torry.net/pages.php?id=96 gibt es noch ein paar Sachen, die sich mit der Aufgabenstellung befassen. Hab' das Original von weiter oben mal angepasst.
Delphi-Quellcode:
Diese Methoden muss man dann nur dem OnCreate bzw. dem OnDestroy aller Formulare zuweisen.
procedure THauptfenster_Uebung.OnCreate(Sender: TObject);
var ini:TIniFile; Filename, formname:string; begin filename := 'E:\Projekte\Uebung\TestIni.Ini'; ini := TInifile.create(filename); Width:= ini.ReadInteger(Name, 'Width', 0); Height:= ini.ReadInteger(Name, 'Height', 0); Left:= ini.ReadInteger(Name, 'Left', 0); Top:= ini.ReadInteger(Name, 'Top', 0); end; procedure THauptfenster_Uebung.OnDestroy(Sender: TObject); var ini:TIniFile; Filename:string; begin ini := TInifile.create(filename); ini.WriteInteger(Name, 'Height', Height); ini.WriteInteger(Name, 'Width', Width); ini.WriteInteger(Name, 'Top', Top); ini.WriteInteger(Name, 'Left', Left); ini.Free; end; Wenn man sich das nun noch in 'ne eigene Komponente packt, könnte man es eventuell auch so in der (ungetesteten) Art lösen:
Delphi-Quellcode:
Komponente auf ein Formular packen und
unit RegForm;
interface type TRegForm = class(TComponent) fFileName : String; public { Public-Deklarationen } constructor Create(AComponent:TComponent); override; destructor Destroy; override; procedure Read(a : TForm); overload; procedure Read; overload; procedure Write(a : TForm); procedure Write; overload; property FileName : String read fFileName write fFileName; end; procedure Register; implementation uses INIFiles; procedure Register; begin RegisterComponents('Tools', [TRegForm]); end; constructor TRegForm.Create(AComponent:TComponent); begin Inherited Create(AComponent); fFileName := Format('.\%s.ini',[AComponent.Name]); end; destructor TRegForm.Destroy; begin Inherited; end; procedure TRegForm.Read(a : TForm); var ini : TIniFile; begin if a is TForm then begin ini := TInifile.create(fFileName); a.Width := ini.ReadInteger(a.Name, 'Width', a.Width); a.Height := ini.ReadInteger(a.Name, 'Height', a.Height); a.Left := ini.ReadInteger(a.Name, 'Left', a.Left); a.Top := ini.ReadInteger(a.Name, 'Top', a.Top); ini.Free; end; end; procedure TRegForm.Save(a : TForm); var ini : TIniFile; begin if a is TForm then begin ini := TInifile.create(fFileName); ini.WriteInteger(a.Name, 'Height', a.Height); ini.WriteInteger(a.Name, 'Width', a.Width); ini.WriteInteger(a.Name, 'Top', a.Top); ini.WriteInteger(a.Name, 'Left', a.Left); ini.Free; end; end; procedure TRegForm.Read; var i : Integer; begin for i := 0 to Screen.FormCount - 1 do begin Read(Screen.Forms[i]); end; end; procedure TRegForm.Write; var i : Integer; begin for i := 0 to Screen.FormCount - 1 do begin Write(Screen.Forms[i]); end; end; end. beim Programmstart an geeigneter Stelle
Delphi-Quellcode:
und beim Programmende
RegForm.Filename := 'Der gewünschte Name, wenn der Defaultwert aus dem Constructor nicht ok ist.ini';
RegForm.Read;
Delphi-Quellcode:
RegForm.Write; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz