Следующий код работает, как и ожидалось (запустите приложение, нажмите кнопку 5-10 раз, чтобы переместить основную форму вправо, закройте приложение, затем снова запустите его, и позиция основной формы будет там, где вы ее оставили).
Создайте приложение форм VCL, поместите на него кнопку tb, измените размер формы, чтобы она была достаточно большой, чтобы удерживать кнопку, и вставьте следующее, чтобы заменить unit1:
unit Unit1;
interface
uses
Windows, Forms, StdCtrls, Classes, Controls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
procedure InitializeVariables;
procedure FinalizeVariables;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
registry;
procedure TForm1.Button1Click(Sender: TObject);
begin
self.Left := self.Left + 10;
end;
procedure TForm1.InitializeVariables;
var
TheReg : tregistry;
begin
TheReg := tregistry.Create;
try
TheReg.RootKey := HKEY_CURRENT_USER;
if TheReg.OpenKey('\Software\killme', false) then
begin
if TheReg.ValueExists('MainLeft') then
self.Left := TheReg.ReadInteger('MainLeft');
end;
finally
TheReg.Free;
end;
end;
procedure TForm1.FinalizeVariables;
var
TheReg : tregistry;
begin
TheReg := tregistry.Create;
try
TheReg.RootKey := HKEY_CURRENT_USER;
if TheReg.OpenKey('\Software\killme', true) then
TheReg.WriteInteger('MainLeft', self.Left);
finally
TheReg.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
InitializeVariables;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FinalizeVariables;
end;
end.