Inno setup Inno设置-基于任务选择有条件地隐藏/显示静态文本 [组件] 名称:“砍刀”;描述:“大公砍刀”;类型:斜杠完全 名称:“弗兰肯斯坦”;描述:“达贡·弗兰肯斯坦”;类型:完全弗兰肯斯坦 [类型] 名称:“完整”;描述:“达贡视频工具” 名称:“砍刀”;描述:“Dagon Slasher” 名称:“弗兰肯斯坦”;描述:“达贡·弗兰肯斯坦” [任务] 名称:“调试”;说明:“没有”;组件:不是斜杠 名称:“Vid”;描述:“为弗兰肯斯坦安装额外的编解码器”;旗帜:未选中;组件:不是斜杠 [守则] 变量 警告:TNewStaticText; 程序初始化; 开始 警告:=TNewStaticText.Create(WizardForm); 警告。父项:=WizardForm.SelectTasksPage; 警告.可见:=假; Warning.AutoSize:=False; 警告.挫折( WizardForm.TasksList.Left, WizardForm.TasksList.Top+WizardForm.TasksList.Height, WizardForm.TasksList.Width, 50 ); Warning.Font.Color:=clRed; 警告。标题:=“警告:这将导致工具菜单中出现一个不起作用的“加入弗兰肯斯坦”按钮。”; 结束;

Inno setup Inno设置-基于任务选择有条件地隐藏/显示静态文本 [组件] 名称:“砍刀”;描述:“大公砍刀”;类型:斜杠完全 名称:“弗兰肯斯坦”;描述:“达贡·弗兰肯斯坦”;类型:完全弗兰肯斯坦 [类型] 名称:“完整”;描述:“达贡视频工具” 名称:“砍刀”;描述:“Dagon Slasher” 名称:“弗兰肯斯坦”;描述:“达贡·弗兰肯斯坦” [任务] 名称:“调试”;说明:“没有”;组件:不是斜杠 名称:“Vid”;描述:“为弗兰肯斯坦安装额外的编解码器”;旗帜:未选中;组件:不是斜杠 [守则] 变量 警告:TNewStaticText; 程序初始化; 开始 警告:=TNewStaticText.Create(WizardForm); 警告。父项:=WizardForm.SelectTasksPage; 警告.可见:=假; Warning.AutoSize:=False; 警告.挫折( WizardForm.TasksList.Left, WizardForm.TasksList.Top+WizardForm.TasksList.Height, WizardForm.TasksList.Width, 50 ); Warning.Font.Color:=clRed; 警告。标题:=“警告:这将导致工具菜单中出现一个不起作用的“加入弗兰肯斯坦”按钮。”; 结束;,inno-setup,pascalscript,Inno Setup,Pascalscript,我又用了一块神奇的石头。问题是,我需要在用户选择任务时显示注释,否则将其隐藏(在同一页面上)。您必须处理向导表单.TasksList.OnClickCheck事件,并相应地更新警告标签可见性 var 警告:TNewStaticText; 程序任务列表点击检查(发送方:ToObject); 开始 警告。可见:= {这个(以及下面的任务索引)必须与表达式保持同步} {在各自任务的“组件”参数中。} {但是请注意,在您的特定情况下,测试} {是多余的,因为当选择“Slasher”时,您没有任务,} {

我又用了一块神奇的石头。问题是,我需要在用户选择任务时显示注释,否则将其隐藏(在同一页面上)。

您必须处理
向导表单.TasksList.OnClickCheck
事件,并相应地更新
警告
标签可见性

var
警告:TNewStaticText;
程序任务列表点击检查(发送方:ToObject);
开始
警告。可见:=
{这个(以及下面的任务索引)必须与表达式保持同步}
{在各自任务的“组件”参数中。}
{但是请注意,在您的特定情况下,测试}
{是多余的,因为当选择“Slasher”时,您没有任务,}
{并且“任务”页面被完全跳过,因此您甚至无法到达这里。}
(未选择组件(“斜杠”)和
WizardForm.TasksList.Checked[0];{您也可以使用WizardIsTaskSelected}
结束;
程序初始化;
开始
警告:=TNewStaticText.Create(WizardForm);
...
{更新任务选择更改时的警告标签可见性}
WizardForm.TasksList.OnClickCheck:=@TasksListClickCheck
结束;
过程CurPageChanged(CurPageID:Integer);
开始
如果CurPageID=wpSelectTasks,则
开始
{更新初始可见性}
TasksList单击检查(WizardForm.TasksList);
结束;
结束;


旁注:

  • 不要将高度硬编码为固定
    50
    。使用DPI进行缩放:
    ScaleY(50)
  • 您应该设置
    Warning.WordWrap:=True
    ,因为标题不适合页面宽度
  • 您应该缩小
    任务列表的高度,因为标签不适合列表下方。缺少
    WizardForm.TasksList.Height:=WizardForm.TasksList.Height-NoteHeight来自@TLama的代码。再次注意,他缺少
    notehight
    的缩放
const
注高度=50;
程序初始化;
开始
WizardForm.TasksList.Height:=WizardForm.TasksList.Height-ScaleY(NoteHeight);
警告:=TNewStaticText.Create(WizardForm);
警告。父项:=WizardForm.SelectTasksPage;
Warning.AutoSize:=False;
Warning.WordWrap:=True;
警告.挫折(
WizardForm.TasksList.Left,
WizardForm.TasksList.Top+WizardForm.TasksList.Height,
WizardForm.TasksList.Width,
ScaleY(注高度)
);
Warning.Font.Color:=clRed;
{更新任务选择更改时的警告标签可见性}
WizardForm.TasksList.OnClickCheck:=@TasksListClickCheck
警告。标题:=
'警告:这将导致“加入弗兰肯斯坦”按钮不起作用'+
'在工具菜单中';
结束;

是!非常感谢你。在最后一次编辑之后,它工作了(第一次,显然也影响了其他组件组合)!这看起来很愚蠢,因为解决方案很简单,我对所有的数字/组合和东西都感到困惑。我发誓,有一天我能在脑子里把这一切都想好,把它写成剧本会容易得多。