2

我正在尝试将 AllowGrayed 设置为 False,根据 Inno Setup 站点,这似乎应该如何完成,但编译时我不断收到“Unknown Identifier ''ALLOWGRAYED'”错误。我敢肯定,我忽略了一些简单的事情。

CompCheckListBox := TNewCheckListBox.Create(CompPage);
CompCheckListBox.Top := StaticText.Top + StaticText.Height + ScaleY(8);
CompCheckListBox.Width := CompPage.SurfaceWidth;
CompCheckListBox.Height := ScaleY(180);
CompCheckListBox.Flat := True;
CompCheckListBox.AllowGrayed := False;
CompCheckListBox.Parent := CompPage.Surface;
CompCheckListBox.AddCheckBox('Option1', '', 0, False, True, False, True, nil);
CompCheckListBox.AddCheckBox('Option2', '', 0, False, True, True, True, nil);
CompCheckListBox.AddCheckBox('Option3', '', 1, False, True, False, False, nil);

谢谢你的帮助。

4

2 回答 2

1

TNewCheckListBox没有AllowGrayed属性,所以你发现的是一个文档错误。但是,我想说,您滥用了该方法的ACheckWhenParentChecked参数。AddCheckBox该参数仅针对子项设置为 True,而不针对父项。因此,尝试以这种方式修改您的脚本:

...
CompCheckListBox.AddCheckBox('Option 1', '', 0, False, False, False, True, nil);
CompCheckListBox.AddCheckBox('Option 2', '', 0, False, True, True, False, nil);
CompCheckListBox.AddCheckBox('Option 3', '', 1, False, True, False, True, nil);
CompCheckListBox.AddCheckBox('Option 4', '', 1, False, True, False, True, nil);
...

这是参考中的方法原型:

function AddCheckBox(const ACaption, ASubItem: String; ALevel: Byte; AChecked,
  AEnabled, AHasInternalChildren, ACheckWhenParentChecked: Boolean; 
  AObject: TObject): Integer;
于 2012-09-27T22:53:44.400 回答
0

这个怎么样(标准组件的语法;如果你愿意,你可以很容易地适应基于代码的页面):

[Components]
Name: parent; Description: ...
Name: parent\main; Description: ...; Flags: fixed
Name: parent\optional; Description ...

仅将文件和其他条目与两个子组件相关联——没有与父组件相关联。理论上,您现在应该有一个设置,如果没有主要组件,就不可能选择可选组件,并且两者看起来是独立的,但实际上是某个更大系统的一部分(当可选组件不是时,它只是部分安装)已安装,但这不会影响主要组件本身)。

于 2012-09-28T10:20:17.600 回答