Restore window to its last state
You can store the main parameters of your form in Registry. Resave them, when you close form, and you can restore them, if you create form again.
uses Registry; procedure TForm1.FormDestroy(Sender: TObject); begin with TRegistry.Create do begin RootKey:=HKEY_LOCAL_MACHINE; if OpenKey('Greatis Software\Example\Form', True) then begin WriteInteger('Left', Form1.Left); WriteInteger('Top', Form1.Top); WriteInteger('Width', Form1.Width); WriteInteger('Height', Form1.Height); case WindowState of wsMaximized: WriteInteger('State', 1); wsMinimized: WriteInteger('State', 2); wsNormal : WriteInteger('State', 3); end; end else MessageDlg('Registry reading error', mtError, [mbOk], 0); CloseKey; end; end; procedure TForm1.FormCreate(Sender: TObject); begin with TRegistry.Create do begin RootKey:=HKEY_LOCAL_MACHINE; if OpenKey('Greatis Software\Example\Form', False) then try Form1.Left:=ReadInteger('Left'); Form1.Top:=ReadInteger('Top'); Form1.Width:=ReadInteger('Width'); Form1.Height:=ReadInteger('Height'); case ReadInteger('State') of 1: Form1.WindowState:=wsMaximized; 2: Form1.WindowState:=wsMinimized; 3: Form1.WindowState:=wsNormal; end; except MessageDlg('Can not go to handle', mtError, [mbOk], 0); end else MessageDlg('Registry reading error', mtError, [mbOk], 0); CloseKey; end; end;