Reputation: 277
I want the tasks display a different image when one of them is checked.
For example, if I have three different tasks:
Task 1: Standard version
Task 2: Lite version
Task 3: Pro version
Here some code
[Code]
{ RedesignWizardFormBegin } { Don't remove this line! }
{ Don't modify this section. It is generated automatically. }
var
BitmapImage1: TBitmapImage;
procedure RedesignWizardForm;
begin
{ BitmapImage1 }
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;
with WizardForm.TasksList do
begin
Width := ScaleX(257);
Height := ScaleY(200);
Visible := False;
end;
end;
Upvotes: 3
Views: 601
Reputation: 202272
WizardIsTaskSelected
(IsTaskSelected
in older versions of Inno Setup) to find out what tasks have been selected.WizardForm.TasksList.OnClickCheck
and CurPageChanged
to detect selection change and update image accordingly.[Files]
Source: "lite.bmp"; Flags: dontcopy
Source: "pro.bmp"; Flags: dontcopy
Source: "std.bmp"; Flags: dontcopy
[Tasks]
Name: std; Description: "Standard version"; Flags: exclusive
Name: lite; Description: "Lite version"; Flags: exclusive
Name: pro; Description: "Pro version"; Flags: exclusive
[Code]
var
BitmapImage1: TBitmapImage;
procedure UpdateTasksImage;
var
Image: string;
begin
if WizardIsTaskSelected('pro') then Image := 'pro.bmp'
else
if WizardIsTaskSelected('lite') then Image := 'lite.bmp'
else
if WizardIsTaskSelected('std') then Image := 'std.bmp'
else Image := '';
if Image <> '' then
begin
ExtractTemporaryFile(Image);
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\' + Image));
BitmapImage1.Visible := True;
end
else
begin
BitmapImage1.Visible := False;
end;
end;
procedure TasksListClickCheck(Sender: TObject);
begin
{ Update image, when task selection changes }
UpdateTasksImage;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
{ Update image, when task page is entered }
{ (as tasks can be selected by changing setup type or components) }
if CurPageID = wpSelectTasks then
begin
UpdateTasksImage;
end;
end;
procedure InitializeWizard;
begin
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Parent := WizardForm.SelectTasksPage;
Left := ScaleX(320);
Top := ScaleY(88);
Width := ScaleX(57);
Height := ScaleY(57);
end;
with WizardForm.TasksList do
begin
Width := ScaleX(257);
Height := ScaleY(200);
end;
WizardForm.TasksList.OnClickCheck := @TasksListClickCheck
end;
Though it seems to me, that your "tasks" should actually be setup types or components. It does not make sense to me, that a user can select combinations of "standard", "lite" and "pro". Shouldn't those be a distinct options?
Upvotes: 1
Reputation: 1400
Add OnClickCheck event : Eg:
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;
Upvotes: 0