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;