// 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;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke