title: INNO Setup: "About" button position
body: <p>I'm having problems with the About button in the components page.
  It works fine in the first page, when it is smaller but it looks like this (see the following screenshot) in this part.</p>
  
  <p><img src="https://i.stack.imgur.com/6dIjU.png" alt="enter image description here"></p>
  
  <p>The code is this one:</p>
  
  <pre><code>    [Setup]
      AppName=My Program
      AppVersion=1.5
      DefaultDirName={pf}\My Program
      DefaultGroupName=My Program
      UninstallDisplayIcon={app}\MyProg.exe
      OutputDir=userdocs:Inno Setup Examples Output
  
  
      [Types]
      Name: "full"; Description: "Full installation"
      Name: "compact"; Description: "Compact installation"
      Name: "custom"; Description: "Custom installation"; Flags: iscustom
  
      [Components]
      Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
      Name: "help"; Description: "Help File"; Types: full
      Name: "readme"; Description: "Readme File"; Types: full
      Name: "readme\en"; Description: "English"; Flags: exclusive
      Name: "readme\de"; Description: "German"; Flags: exclusive
  
      [Code]
      procedure AboutButtonOnClick(Sender: TObject);
      begin
        MsgBox('This is a demo of how to create a button!', mbInformation, mb_Ok);
      end;
  
      procedure CreateAboutButton(ParentForm: TSetupForm; CancelButton: TNewButton);
      var
        AboutButton: TNewButton;
      begin
        AboutButton := TNewButton.Create(ParentForm);
        AboutButton.Left := ParentForm.ClientWidth - CancelButton.Left - CancelButton.Width;
        AboutButton.Top := CancelButton.Top;
        AboutButton.Width := CancelButton.Width;
        AboutButton.Height := CancelButton.Height;
        AboutButton.Caption := '&amp;About...';
        AboutButton.OnClick := @AboutButtonOnClick;
        AboutButton.Parent := ParentForm;
      end;
  
  
      procedure InitializeWizard1();
      begin
        CreateAboutButton(WizardForm, WizardForm.CancelButton);
      end;
  
      type
        TPositionStorage = array of Integer;
  
      var
        CompPageModified: Boolean;
        CompPagePositions: TPositionStorage;
  
      procedure SaveComponentsPage(out Storage: TPositionStorage);
      begin
        SetArrayLength(Storage, 10);
  
        Storage[0] := WizardForm.Height;
        Storage[1] := WizardForm.NextButton.Top;
        Storage[2] := WizardForm.BackButton.Top;
        Storage[3] := WizardForm.CancelButton.Top;
        Storage[4] := WizardForm.ComponentsList.Height;
        Storage[5] := WizardForm.OuterNotebook.Height;
        Storage[6] := WizardForm.InnerNotebook.Height;
        Storage[7] := WizardForm.Bevel.Top;
        Storage[8] := WizardForm.BeveledLabel.Top;
        Storage[9] := WizardForm.ComponentsDiskSpaceLabel.Top;
      end;
  
      procedure LoadComponentsPage(const Storage: TPositionStorage;
        HeightOffset: Integer);
      begin
        if GetArrayLength(Storage) &lt;&gt; 10 then
          RaiseException('Invalid storage array length.');
  
        WizardForm.Height := Storage[0] + HeightOffset;
        WizardForm.NextButton.Top := Storage[1] + HeightOffset;
        WizardForm.BackButton.Top := Storage[2] + HeightOffset;
        WizardForm.CancelButton.Top := Storage[3] + HeightOffset;
        WizardForm.ComponentsList.Height := Storage[4] + HeightOffset;
        WizardForm.OuterNotebook.Height := Storage[5] + HeightOffset;
        WizardForm.InnerNotebook.Height := Storage[6] + HeightOffset;
        WizardForm.Bevel.Top := Storage[7] + HeightOffset;
        WizardForm.BeveledLabel.Top := Storage[8] + HeightOffset;
        WizardForm.ComponentsDiskSpaceLabel.Top := Storage[9] + HeightOffset;
      end;
  
      procedure InitializeWizard2();
      begin
        CompPageModified := False;
      end;
  
      procedure CurPageChanged(CurPageID: Integer);
      begin
        if CurpageID = wpSelectComponents then
        begin
          SaveComponentsPage(CompPagePositions);
          LoadComponentsPage(CompPagePositions, 200);
          CompPageModified := True;
        end
        else
        if CompPageModified then
        begin
          LoadComponentsPage(CompPagePositions, 0);
          CompPageModified := False;
        end;
      end;
  
         procedure InitializeWizard();
         begin 
          InitializeWizard1();
          InitializeWizard2();
         end;
  </code></pre>
  
  <p>Could anyone help me? Thanks so much in advanced.</p>