Zapamiętywanie położenia i rozmiaru formularza przy wyłączaniu programu

Aby podczas zamykania programu zapamiętać jego położenie na ekranie i wymiary należy utworzyć zdarzenie OnCloseQuery dla formularza, gdzie wykorzystamy klasę TRegistry:

Unit1.cpp

void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
   TRegistry& Reg = *new TRegistry();

   if
(Reg.OpenKey("Software\\Firma\\Program", true))
   {
      Reg.WriteInteger("Left", Left);
      Reg.WriteInteger("Top", Top);
      Reg.WriteInteger("Width", Width);
      Reg.WriteInteger("Height", Height);
   }

   delete &Reg;
}

Natomiast, żeby przy uruchamianiu programu odczytać te wartości i wyświetlić formularz w odpowiednim miejscu ekranu i odpowiednich rozmiarów tworzymy zdarzenie OnCreate dla tego formularza (jeżeli nie ma zapisu w rejestrze to formularz zostaje wycentrowany na ekranie, a rozmiar ma taki jaki zdefiniowaliśmy w Inspektorze Obiektów):

Unit1.cpp

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
   TRegistry& Reg = *new TRegistry();
   
   if
(Reg.OpenKey("Software\\Firma\\Program", false))
   {
      Left = Reg.ReadInteger("Left");
      Top = Reg.ReadInteger("Top");
      Width = Reg.ReadInteger("Width");
      Height = Reg.ReadInteger("Height");
   }
   else
   {
      Left = Screen->Width / 2 - Width / 2;
      Top = Screen->Height / 2 - Height / 2;
   }
   
   delete &Reg;
}