// Beim Beenden
eines Programms wird Größe und Position von Form1
// in der Registry gesichert. Beim Neustart werden die Werte wieder
// ausgelesen und das Fenster dementsprechend eingestellt.
// Die Werte für
left,top,
width
und
height sind in
einem Puffer
// zusammengefasst, um nur einen einzigen Eintrag im Schlüssel zu
// haben
(und um
WriteBinaryData
zu demonstrieren).
// Getestet mit D4 unter WinME
uses
registry;
var
Reg:TRegistry;
buff:array[0..3]of integer;
const
schlssl='\MeinProgramm';
procedure TForm1.FormCreate(Sender: TObject);
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey(schlssl,False)
then begin
Reg.ReadBinaryData('Position',buff,sizeof(buff));
setbounds(buff[0],buff[1],buff[2],buff[3]);
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var
CanClose: Boolean);
begin
buff[0]:=left;
buff[1]:=top;
buff[2]:=width;
buff[3]:=height;
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey(schlssl,True)
then
Reg.WriteBinaryData('Position',buff,sizeof(buff));
finally
Reg.CloseKey;
Reg.Free;
end;
end;
// Um keinen
Datenmüll zu hinterlassen, wenn das Programm nicht
// mehr genutzt wird, sollte als Teil einer Uninstall-Routine der
// Schlüssel wieder aus der Registry entfernt werden:
procedure
Key_Loesch;
const schlssl='\MeinProgramm';
var reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CURRENT_USER;
if not Reg.deletekey(schlssl) then
showmessage('Löschen fehlgeschlagen');
finally
Reg.CloseKey;
Reg.Free;
end;
end;
|