Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup Inno安装程序在TasksList.OnClickCheck事件中检测已更改的任务/项目_Inno Setup_Pascalscript - Fatal编程技术网

Inno setup Inno安装程序在TasksList.OnClickCheck事件中检测已更改的任务/项目

Inno setup Inno安装程序在TasksList.OnClickCheck事件中检测已更改的任务/项目,inno-setup,pascalscript,Inno Setup,Pascalscript,我被OnClickCheck属性的简单情况所困扰。问题是,我每次打开backup任务时都会看到Msgbox,但同时(当它打开时)OnClickCheck也会在按下uninst任务时出现!似乎OnClickCheck会检查所有单击,但我只需要检查第一个任务上的单击 在“WizardForm.TasksList.OnClickCheck”中添加任务的确切数量是合乎逻辑的(WizardForm.TasksList.OnClickCheck[0]),但编译器不同意 [任务] 名称:备份;描述:执行备份

我被
OnClickCheck
属性的简单情况所困扰。问题是,我每次打开
backup
任务时都会看到
Msgbox
,但同时(当它打开时)
OnClickCheck
也会在按下
uninst
任务时出现!似乎
OnClickCheck
会检查所有单击,但我只需要检查第一个任务上的单击

在“
WizardForm.TasksList.OnClickCheck
”中添加任务的确切数量是合乎逻辑的(
WizardForm.TasksList.OnClickCheck[0]
),但编译器不同意

[任务]
名称:备份;描述:执行备份
姓名:uninst ;;描述:不创建卸载程序
[守则]
程序TaskOnClick(发送方:TObject);
开始
如果选择了“备份”,则
开始
MsgBox('已检查备份任务',MB信息,MB_确定)
结束;
结束;
过程初始化Wizard();
开始
WizardForm.TasksList.OnClickCheck:=@TaskOnClick;
结束;

无法确切说明在
OnClickCheck
事件中更改了哪些任务(列表项)

要知道用户选中了哪个项目,可以使用
ItemIndex
属性。用户只能检查所选项目

但是,如果您有任务层次结构,安装程序甚至可以由于子/父项的更改而自动切换未选择的任务。因此,要告诉所有更改,您所能做的就是记住以前的状态,并在调用
OnClickCheck
时将其与当前状态进行比较

var
TasksState:TCheckBoxState的数组;
程序任务ICKCheck(发送方:TObject);
变量
I:整数;
开始
对于I:=0到WizardForm.TasksList.Items.Count-1 do
开始
如果TasksState[I]向导Form.TasksList.State[I],则
开始
日志(格式('任务%d状态从%d更改为%d',
[I,TasksState[I],WizardForm.TasksList.State[I]];
TasksState[I]:=WizardForm.TasksList.State[I];
结束;
结束;
结束;
过程CurPageChanged(CurPageID:Integer);
变量
I:整数;
开始
如果CurPageID=wpSelectTasks,则
开始
{现在才初始化任务列表(例如,基于选定的设置}
{类型和组件)。记住当前/初始状态。}
SetArrayLength(TasksState、WizardForm.TasksList.Items.Count);
对于I:=0到WizardForm.TasksList.Items.Count-1 do
TasksState[I]:=WizardForm.TasksList.State[I];
结束;
结束;
过程初始化Wizard();
开始
WizardForm.TasksList.OnClickCheck:=@TasksClickCheck;
结束;

除了使用索引,还可以使用或来使用任务名称。有关示例,请参见


另见: