2014-08-28 137 views
-1

我想顯示自定義的頁面只有當先前的頁面的選項被激活,例如,我有這樣的代碼選擇頁面選項:Inno Setup的編譯器:添加根據

[Code] 
var page_option : TInputOptionWizardPage; 
    page_dir_se : TInputDirWizardPage; 

procedure InitializeWizard(); 
begin 
    page_option := CreateInputOptionPage(1,'Select','','',False,True); 
    page_option.Add('Option 1'); 
    page_option.Add('Option 2'); 

    page_dir_se :=CreateInputDirPage(page_option.ID,'Select', '','',False, ''); 
    page_dir_se.Add('Select A'); 
    page_dir_se.Add('Select B'); 
    page_dir_se.Add('Select C'); 

end; 

在這個例子中僅當page_option.Values [0]爲TRUE時,page_dir_se纔會顯示我,如果page_option.Values [1]爲TRUE,則應顯示另一頁。

我用Inno Setup的編譯器

Thankz尋求幫助。 問候的xD

回答

1

您可以在ShouldSkipPage事件跳過任何頁面:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[Code] 
var 
    DirPage: TInputDirWizardPage; 
    OptionPage: TInputOptionWizardPage; 

procedure InitializeWizard; 
begin 
    OptionPage := CreateInputOptionPage(wpWelcome, 'Caption', 'Description', 
    'SubCaption', False, True); 
    OptionPage.Add('Option 1'); 
    OptionPage.Add('Option 2'); 

    DirPage := CreateInputDirPage(OptionPage.ID, 'Caption', 'Description', 
    'SubCaption', False, ''); 
    DirPage.Add('Select A'); 
    DirPage.Add('Select B'); 
    DirPage.Add('Select C'); 
end; 

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    // skip the page if your custom dir page is about to show and 
    // the option is not checked 
    Result := (PageID = DirPage.ID) and not OptionPage.Values[0]; 
end; 
+0

這是正確的,代碼工作,但是如果用戶返回到選擇選項,並取消對1(.values [0] )並單擊下一步按鈕,代碼不再起作用,就好像您沒有升級該值。 – aprendiz123456789 2014-08-29 13:52:15

+0

這就是我在我的後期更新中修復的問題。試試當前的腳本。 – TLama 2014-08-29 13:57:37

+0

工程.. ..謝謝你的幫助.. = D – aprendiz123456789 2014-08-29 17:56:57