Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 Setup_Pascalscript - Fatal编程技术网

Inno setup 选择任务时显示图像

Inno setup 选择任务时显示图像,inno-setup,pascalscript,Inno Setup,Pascalscript,我希望任务在选中其中一个时显示不同的图像 例如,如果我有三个不同的任务: Task 1: Standard version Task 2: Lite version Task 3: Pro version 选中任务1时,必须显示图像 选中任务2时,必须隐藏任务1图像并显示任务2图像 选中任务3后,必须在任务图像下方隐藏其他任务,并显示任务3图像 这里有一些代码 [代码] {RedesignWizardFormBegin}{不要删除此行!} {不要修改此节。它是自动生成的。} 变量 Bit

我希望任务在选中其中一个时显示不同的图像

例如,如果我有三个不同的任务:

Task 1: Standard version
Task 2: Lite version
Task 3: Pro version
  • 选中任务1时,必须显示图像
  • 选中任务2时,必须隐藏任务1图像并显示任务2图像
  • 选中任务3后,必须在任务图像下方隐藏其他任务,并显示任务3图像

这里有一些代码

[代码]
{RedesignWizardFormBegin}{不要删除此行!}
{不要修改此节。它是自动生成的。}
变量
BitMapImage 1:TBitmapImage;
程序重新设计;
开始
{BitmapImage1}
BitmapImage1:=TBitmapImage.Create(WizardForm);
用BitmapImage1做什么
开始
父项:=WizardForm.SelectTasksPage;
左:=ScaleX(320);
顶部:=ScaleY(88);
宽度:=ScaleX(57);
高度:=斯卡利(57);
ExtractTemporary文件('WizardForm.BitmapImage1.bmp');
LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp');
结束;
使用WizardForm.TasksList do
开始
宽度:=ScaleX(257);
高度:=ScaleY(200);
可见:=假;
结束;
结束;

添加单击检查事件: 例如:

  • 使用(
    IsTaskSelected
    在较旧版本的Inno安装程序中)查找已选择的任务
  • 处理
    WizardForm.TasksList.OnClickCheck
    并检测选择更改并相应地更新图像
[文件]
资料来源:“lite.bmp”;标志:dontcopy
资料来源:“pro.bmp”;标志:dontcopy
资料来源:“std.bmp”;标志:dontcopy
[任务]
姓名:std ;;说明:“标准版”;旗帜:独家
名称:lite;说明:“精简版”;旗帜:独家
姓名:pro,;说明:“专业版”;旗帜:独家
[守则]
变量
BitMapImage 1:TBitmapImage;
程序更新任务集;
变量
图像:字符串;
开始
如果选择了Wizardistask('pro'),则图像:='pro.bmp'
其他的
如果选择了Wizardistask(“lite”),则图像:='lite.bmp'
其他的
如果选择了Wizardistask('std'),则图像:='std.bmp'
else图像:='';
如果图像为“”,则
开始
提取临时文件(图像);
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant({tmp}\'+Image));
BitmapImage1.Visible:=True;
结束
其他的
开始
BitmapImage1.Visible:=False;
结束;
结束;
程序任务列表点击检查(发送方:ToObject);
开始
{任务选择更改时更新图像}
UpdateTasksImage;
结束;
过程CurPageChanged(CurPageID:Integer);
开始
{输入任务页面时更新图像}
{(因为可以通过更改设置类型或组件来选择任务)}
如果CurPageID=wpSelectTasks,则
开始
UpdateTasksImage;
结束;
结束;
程序初始化;
开始
BitmapImage1:=TBitmapImage.Create(WizardForm);
用BitmapImage1做什么
开始
父项:=WizardForm.SelectTasksPage;
左:=ScaleX(320);
顶部:=ScaleY(88);
宽度:=ScaleX(57);
高度:=斯卡利(57);
结束;
使用WizardForm.TasksList do
开始
宽度:=ScaleX(257);
高度:=ScaleY(200);
结束;
WizardForm.TasksList.OnClickCheck:=@TasksListClickCheck
结束;



虽然在我看来,您的“任务”实际上应该是设置类型或组件。用户可以选择“standard”、“lite”和“pro”的组合,这对我来说毫无意义。这些不应该是一个不同的选项吗?

是的,如果其中一个被选中,其他两个必须被取消选中。那么为什么在问题中显示复选框呢?这些应该是单选按钮。再说一遍,这些不是任务,而是设置类型或组件。不管怎样,我已经回答了你的问题。那么在这一部分中,我应该使用什么目录:“pro.bmp”?|{app}\pro.bmp'|?因为每次加载相同的图像(
BitmapImage1.bmp
)。您没有使用
Image
变量。按原样使用我的代码。
var
  BitmapImage1: TBitmapImage;
  BitmapImage2: TBitmapImage;
  BitmapImage3: TBitmapImage;

procedure TasksListClickCheck(Sender: TObject);
begin
    if (WizardForm.TasksList.Checked[0] = True) then
    begin
      BitmapImage1 := TBitmapImage.Create(WizardForm);
      with BitmapImage1 do
      begin
        Parent := WizardForm.SelectTasksPage;
        Left := ScaleX(320);
        Top := ScaleY(88);
        Width := ScaleX(57);
        Height := ScaleY(57); 

        ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');        
   Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
      end;
    end;

    if (WizardForm.TasksList.Checked[1] = True) then
    begin
      BitmapImage2 := TBitmapImage.Create(WizardForm);
      with BitmapImage1 do
      begin
        Parent := WizardForm.SelectTasksPage;
        Left := ScaleX(320);
        Top := ScaleY(88);
        Width := ScaleX(57);
        Height := ScaleY(57);
        ExtractTemporaryFile('WizardForm.BitmapImage2.bmp');        
   Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage2.bmp'));
      end;
    end;
    if (WizardForm.TasksList.Checked[2] = True) then
    begin
      BitmapImage3 := TBitmapImage.Create(WizardForm);
      with BitmapImage1 do
      begin
        Parent := WizardForm.SelectTasksPage;
        Left := ScaleX(320);
        Top := ScaleY(88);
        Width := ScaleX(57);
        Height := ScaleY(57);
        ExtractTemporaryFile('WizardForm.BitmapImage3.bmp');        
   Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage3.bmp'));
      end;
    end;
end;

procedure InitializeWizard;
begin        
    WizardForm.TasksList.OnClickCheck := @TasksListClickCheck

    with WizardForm.TasksList do
    begin
      Width := ScaleX(257);
      Height := ScaleY(200);
      Visible := True;
    end;
end;