Wo der Unterschied ist ? Wenn ich "Form1" statt "Name" schreibe, dann gilt es eben nur für Form1. Jede Form hat aber einen Namen und den weiß sie selber. Die Ini muß ja nicht nur gelesen, sondern bei Bedarf auch geändert und das dann abgespeichert werden. Was liegt da näher, als das beim FormClose zu machen ?
Delphi-Quellcode:
procedure TfrmTest.FormClose(Sender: TObject; var Action: TCloseAction);
var FensterIni : TIniFile;
begin
inherited;
if not CDStart then begin
try
FensterIni := TIniFile.Create(FensterDateiName);
FensterIni.WriteInteger(Name,'Left',Left);
FensterIni.WriteInteger(Name,'Top',Top);
FensterIni.WriteInteger(Name,'Width',Width);
FensterIni.WriteInteger(Name,'Height',Height);
finally
FensterIni.Free;
end;
end;
Action := caFree;
end;
Im Endeffekt ist die Ini dann so aufgebaut :
[frmTest]
Left=230
Top=143
Width=482
Height=511
Der kleine aber feine Unterschied besteht in der Praxis z.B. darin, daß mein Code C+P geeigneter ist. Ich brauche nämlich nur den procedure-body in die eigenen FormShow/FormClose zu kopieren. Oder, wie gesagt : ab mit solchem Zeugs in die Objektablage und statt TForm eben TMeineForm benutzen. Siehe die Variable CDStart. Die war am Anfang noch nicht vorhanden. Nachträgliches Ergänzen hätte bedeutet, zig Forms damit bestücken zu müssen. Ähnliches gilt für das caFree. Wie schnell hat man sowas mal vergessen.