2014-03-04 2 views
1

간단한 일이 필요합니다 : 사전 및 일반 설치 버튼이 있어야합니다. 정상적인 경우에는 모든 것이 간단합니다. NextButtonClick에 대한 일부 로직과 함께 기본 다음 버튼을 사용하여 조건 변수를 설정하고 ShouldSkipPage을 사용하여 일부 페이지를 스킵합니다. 그러나 고급 설정을 위해 나는 새로운 버튼을 생성하고 내가 그것을 클릭에 할 필요는 다음 설치 페이지를 열 수 있습니다 :버튼 클릭으로 페이지로 어떻게 이동합니까?

procedure CurPageChanged(CurPageID : Integer); 
begin 
if CurPageID = wpWelcome then begin 
    AdvancedButton := TButton.Create(WizardForm); 
    AdvancedButton.Caption := 'Advanced Install'; 
    AdvancedButton.Left := WizardForm.InfoAfterPage.Left + 10; 
    AdvancedButton.Top := WizardForm.InfoAfterPage.Height + 88; 
    AdvancedButton.Parent := WizardForm.NextButton.Parent; 
    # AdvancedButton.OnClick := What shall I call to open say next page (or some page by given PageID value) 
    end 
    else begin 
    AdvancedButton.Visible := False; 
    end; 

end; 

그래서 내가 열 부를 것이다 무슨 말을 다음 페이지 (또는 특정 페이지 id 값에 의해 일부 페이지) 내 버튼 클릭 (어떤 NextPage 또는 Inno API에서 일부 SetPage 함수를 찾을 수 없습니다)?

+0

OT : 컨트롤 생성 후 첫 번째로 'Parent' 속성을 컨트롤에 설정합니다. 부모에 의한 컨트롤 정렬을 적용하고 부모가 할당되기 전에 실수로 해당 라인을 추가 할 수 있으므로 그렇게하는 것이 좋습니다. – TLama

답변

1

Inno Setup에는 "페이지로 바로 건너 뛰기"와 같은 것이 없습니다. '고급 모드'에서 특정 페이지를 자동으로 건너 뛰기 만하면됩니다.

일반 설치 프로그램과 동일하게 수행하십시오. '고급 모드'를 유지하기 위해 하나의 변수를 설정하십시오. Advance 버튼을 클릭 한 후 :

[Code] 
var 
    IsAdvanced: Boolean; 

procedure AdvancedButtonClick(Sender: TObject); 
begin 
    IsAdvanced := True; 
    WizardForm.NextButton.OnClick(nil); 
end; 

procedure InitializeWizard; 
var 
    AdvancedButton: TNewButton; 
begin 
    // not necessary; just for sure 
    IsAdvanced := False; 
    // create the button 
    AdvancedButton := TNewButton.Create(WizardForm); 
    AdvancedButton.Caption := 'Advanced Install'; 
    AdvancedButton.Left := WizardForm.InfoAfterPage.Left + 10; 
    AdvancedButton.Top := WizardForm.InfoAfterPage.Height + 88; 
    AdvancedButton.Parent := WizardForm.NextButton.Parent; 
    AdvancedButton.OnClick := @AdvancedButtonClick; 
end; 

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    // the <page where you want to end up> fill with the wizard page constant 
    // of the page where you want to end up, e.g. wpReady 
    Result := IsAdvanced and (PageID <> <page where you want to end up>); 
end; 

이 논리를 사용하면 특정 페이지로 조용한 '점프'를 시뮬레이션 할 수 있습니다.

+1

페이지가 반드시 숫자로 된 ID 순서로 표시되지는 않으므로 의도하지 않은 페이지를 건너 뛸 수 있습니다. 또한 IsAdvanced 선택 항목 자체가있는 페이지를 건너 뛰지 않아도됩니다. 그렇지 않으면 Back을 클릭하여 마음을 바꾸면 사용자가 놀랄 수 있습니다. – Miral

+0

사용자가 고급을 클릭하고 다음을 클릭하지 않아도됩니까? 나는 그가 버튼 하나만 클릭하도록하고 싶습니다 - 이것이 나의 주요 포인트입니다. – DuckQueen

+0

예, 가능합니다. 그러나 내가 편집 한 내용대로 다음 버튼 클릭을 시뮬레이션 할 수 있습니다 (Slappy, 내 차단에 대해 신경 쓰지 않기를 바랍니다 .-) – TLama

관련 문제