How can I modify Inno Setup script from Inno Setup: Enlarge component page only with preview and description to on an separate window (512x400 dimensions).
Like this:
How can I modify Inno Setup script from Inno Setup: Enlarge component page only with preview and description to on an separate window (512x400 dimensions).
Like this:
Building upon my answer to Long descriptions on Inno Setup components. You will need to copy HoverTimerProc
and it's supporting functions and global variables.
This answer modifies the HoverComponentChanged
and InitializeWizard
procedures to support an image window in addition to description labels.
[Files]
...
Source: Main.bmp; Flags: dontcopy
Source: Additional.bmp; Flags: dontcopy
Source: Help.bmp; Flags: dontcopy
[Code]
var
CompLabel: TLabel;
CompForm: TSetupForm;
CompImage: TBitmapImage;
LoadingImage: Boolean;
procedure HoverComponentChanged(Index: Integer);
var
Description: string;
Image: string;
ImagePath: string;
begin
case Index of
0: begin Description := 'This is the description of Main Files'; Image := 'main.bmp'; end;
1: begin Description := 'This is the description of Additional Files'; Image := 'additional.bmp'; end;
2: begin Description := 'This is the description of Help Files'; Image := 'help.bmp'; end;
else
Description := 'Move your mouse over a component to see its description.';
end;
CompLabel.Caption := Description;
if Image <> '' then
begin
{ The ExtractTemporaryFile pumps the message queue, prevent recursion }
if not LoadingImage then
begin
LoadingImage := True;
try
ImagePath := ExpandConstant('{tmp}\' + Image);
if not FileExists(ImagePath) then
begin
ExtractTemporaryFile(Image);
end;
CompImage.Bitmap.LoadFromFile(ImagePath);
finally
LoadingImage := False;
end;
end;
CompForm.Left := WizardForm.Left + WizardForm.Width;
CompForm.Top := WizardForm.Top;
CompForm.Visible := True;
end
else
begin
CompForm.Visible := False;
end;
end;
procedure InitializeWizard();
var
HoverTimerCallback: LongWord;
begin
HoverTimerCallback := WrapTimerProc(@HoverTimerProc, 4);
SetTimer(0, 0, 50, HoverTimerCallback);
CompLabel := TLabel.Create(WizardForm);
CompLabel.Parent := WizardForm.SelectComponentsPage;
CompLabel.Left := WizardForm.ComponentsList.Left;
CompLabel.Width := WizardForm.ComponentsList.Width;
CompLabel.Height := ScaleY(32);
CompLabel.Top := WizardForm.ComponentsList.Top + WizardForm.ComponentsList.Height - CompLabel.Height;
CompLabel.AutoSize := False;
CompLabel.WordWrap := True;
CompForm := CreateCustomForm;
CompForm.ClientWidth := 512;
CompForm.ClientHeight := 400;
CompImage := TBitmapImage.Create(CompForm);
CompImage.Parent := CompForm;
CompImage.Top := 0;
CompImage.Left := 0;
CompImage.Width := CompForm.ClientWidth;
CompImage.Height := CompForm.ClientHeight;
WizardForm.ComponentsList.Height := WizardForm.ComponentsList.Height - CompLabel.Height - ScaleY(8);
end;