2016-08-05 2 views
1

사용자 지정 'CreateInputOptionPage'을 만드는이 지원 페이지에서 페이지를 변수에 할당하여 저장하는 것이 좋습니다. 그러나이 과제가 언제 일어나야하는지 명확하지 않습니다. '전역 변수를 사용하지 않고 사용자 지정 마법사 페이지에서 값 읽기

내가 말할 수있는 것부터, 페이지를 만들 때이 권한을 할당하면 기본값을 얻게됩니다. 이것은 페이지가 생성 될 때 사용자가 아직 어떠한 "Input Query"도 입력하지 않았기 때문에 의미가 있습니다.

따라서 난에서 페이지의 변수 (Page.Values[0])에 액세스하기 위해 필요한, 그렇게하기 위해서는 function NextButtonClick(CurPageID: Integer): Boolean;

를 사용하여, 다음 버튼을 클릭 변수는 페이지의 값을 할당하도록 권유 NextButtonClick 기능. Page가 다른 함수로 정의 되었기 때문에 Page를 전역 변수로 사용하기 위해 해당 값에 액세스 할 수있는 유일한 방법입니까? 그게 내가해야 할 일이지만 글로벌 변수에 대한 대안이있는 사람이 있는지 궁금해하고있었습니다.

내 코드의 스텁.

; 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; 
+0

전역 변수에 어떤 문제점이 있습니까? –

+0

아무도, 난 그냥 아마추어 프로그래머이고 전역 변수가 더러운이라고 들었습니다. –

+0

예, 전체 애플리케이션을 개발할 때 독립형 코드로 더티입니다. 이 경우 기존 응용 프로그램에 대해 이벤트 훅을 구현하기 만하므로 다른 선택의 여지가 없습니다. –

답변

1

전역 변수를 사용하여 사용자 정의 페이지에 대한 참조를 저장하는 것이 정확하고 쉬운 방법입니다.

실제로 사용자 값을 다른 변수에 저장할 필요가 있는지 여부는 의문입니다. 필요한 순간에 사용자 정의 페이지에서 값을 읽으십시오.


유일한 다른 방법에 재귀 적 WizardForm의 자식 컨트롤에 사용자 정의 페이지를 조회한다. 코드가 많아 비효율적입니다.

재귀 적 구성 요소 iteraction에 대한 예제는 my answer to Inno Setup: OnHover event을 참조하십시오.

관련 문제