2014-08-28 100 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