Lendo valores de páginas personalizadas do assistente sem usar variáveis globais

Nesta página de suporte para criar um 'personalizadoCreateInputOptionPage', eles sugerem armazenar os valores da página, apenas atribuindo-os a uma variável. Não está claro, no entanto, quando essa tarefa acontecer.

Pelo que sei, se você atribuir esse direito ao criar a página, receberá o valor padrão. Isso faz sentido, pois quando a página é criada, o usuário ainda não inseriu nenhuma "Consulta de entrada".

Portanto, raciocinei para atribuir os valores da página a uma variável quando o botão 'Avançar' é clicado, usandofunction NextButtonClick(CurPageID: Integer): Boolean;

Para fazer isso, eu precisava acessar a variável da página (Page.Values[0]) noNextButtonClick função. Como Page foi definido em uma função diferente, é a única maneira de acessar esses valores para que Page seja uma variável global? Foi isso que resolvi fazer, mas fiquei imaginando se alguém por aí teria uma alternativa às variáveis globais.

Topo do meu código até agora.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "O"
#define MyAppVersion "0.0"
#define MyAppPublisher "O."
#define MyAppURL "http://www.o.com/"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{ED5F31B8-32DD-4175-833A-C6D7CBD90DD9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={sd}\{#MyAppName}
AllowNoIcons=yes
OutputDir={desktop}
OutputBaseFilename=dummy
Compression=lzma
SolidCompression=yes

[code]

var
  Page: TInputOptionWizardPage;
  InstallationTypeIsClient: boolean;

procedure InitializeWizard();
begin
  Page := CreateInputOptionPage(wpWelcome,'Installation Type', 'Select Installation Type', 'No really, do some selecting', True, False)
  Page.Add('Server Install');
  Page.Add('Client Install');
  Page.Values[1] := True;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID=100 then
  begin
    InstallationTypeIsClient := Page.Values[1];
    MsgBox('InstallationTypeIsClient value is ' + Format('%d', [InstallationTypeIsClient]), mbInformation, MB_OK);
  end;
  Result := True;
end;

questionAnswers(1)

yourAnswerToTheQuestion