使用AllowGrayed进行Inno设置

时间:2012-09-27 18:56:56

标签: installer inno-setup pascal

我正在尝试将AllowGrayed设置为False,并且根据Inno Setup网站,这似乎应该如何完成,但我在编译时不断收到“未知标识符''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);

感谢您的帮助。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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

仅将文件和其他条目与两个子组件关联 - 没有父组件。理论上,你现在应该有一个设置,在没有主要组件的情况下选择可选组件是不可能的,这两个看起来是独立的,但实际上是一些较大系统的一部分(只有在部分安装时才会部分安装)未安装可选组件,但这不会影响主组件本身。)