AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fensterpositionen mit Hilfe einer Unit speichern

Fensterpositionen mit Hilfe einer Unit speichern

Ein Thema von 98Ferd · begonnen am 17. Nov 2016 · letzter Beitrag vom 17. Nov 2016
Antwort Antwort
Seite 2 von 2     12
nahpets
(Gast)

n/a Beiträge
 
#11

AW: Fensterpositionen mit Hilfe einer Unit speichern

  Alt 17. Nov 2016, 20:38
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:
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;
Diese Methoden muss man dann nur dem OnCreate bzw. dem OnDestroy aller Formulare zuweisen.

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:
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.
Komponente auf ein Formular packen und
beim Programmstart an geeigneter Stelle
Delphi-Quellcode:
RegForm.Filename := 'Der gewünschte Name, wenn der Defaultwert aus dem Constructor nicht ok ist.ini';
RegForm.Read;
und beim Programmende
Delphi-Quellcode:

RegForm.Write;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf