Inno Setup 中更大的“选择组件”页面

问题描述 投票:0回答:2

我已经尝试了一段时间让“选择组件”页面变大,如下图所示,包括组件内部窗口(白色的),因为我有很多组件......并且当它变得更容易选择时这是更大的窗户。如果有人知道这是否可能,请给我提示或给我指出方向。

enter image description here

值得庆幸的是, 开始

inno-setup
2个回答
4
投票

根据您的原始脚本我做了以下更改。为了存储原始位置(顶部和高度值),我使用了一个整数数组,并制定了两个通用过程来存储当前位置和恢复它们。

恢复过程具有

HeightOffset
参数,您可以在其中指定值,通过该值,输入整数数组中的所有值将在传递到向导表单组件属性之前增加。除此之外,我声明了一个单独的标志,指示向导表单已修改大小。

我使用了所有这些,因为它提高了脚本的可读性,并且可以轻松扩展到其他页面:

[Code]

type
  TPositionStorage = array of Integer;

var
  CompPageModified: Boolean;
  CompPagePositions: TPositionStorage;

procedure SaveComponentsPage(out Storage: TPositionStorage);
begin
  SetArrayLength(Storage, 10);

  Storage[0] := WizardForm.Height;
  Storage[1] := WizardForm.NextButton.Top;
  Storage[2] := WizardForm.BackButton.Top;
  Storage[3] := WizardForm.CancelButton.Top;
  Storage[4] := WizardForm.ComponentsList.Height;
  Storage[5] := WizardForm.OuterNotebook.Height;
  Storage[6] := WizardForm.InnerNotebook.Height;
  Storage[7] := WizardForm.Bevel.Top;
  Storage[8] := WizardForm.BeveledLabel.Top;
  Storage[9] := WizardForm.ComponentsDiskSpaceLabel.Top;
end;

procedure LoadComponentsPage(const Storage: TPositionStorage;
  HeightOffset: Integer);
begin
  if GetArrayLength(Storage) <> 10 then
    RaiseException('Invalid storage array length.');

  WizardForm.Height := Storage[0] + HeightOffset;
  WizardForm.NextButton.Top := Storage[1] + HeightOffset;
  WizardForm.BackButton.Top := Storage[2] + HeightOffset;
  WizardForm.CancelButton.Top := Storage[3] + HeightOffset;
  WizardForm.ComponentsList.Height := Storage[4] + HeightOffset;
  WizardForm.OuterNotebook.Height := Storage[5] + HeightOffset;
  WizardForm.InnerNotebook.Height := Storage[6] + HeightOffset;
  WizardForm.Bevel.Top := Storage[7] + HeightOffset;
  WizardForm.BeveledLabel.Top := Storage[8] + HeightOffset;
  WizardForm.ComponentsDiskSpaceLabel.Top := Storage[9] + HeightOffset;
end;

procedure InitializeWizard;
begin
  CompPageModified := False;
end;
 
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurpageID = wpSelectComponents then
  begin
    SaveComponentsPage(CompPagePositions);
    LoadComponentsPage(CompPagePositions, ScaleY(200));
    CompPageModified := True;
  end
  else
  if CompPageModified then
  begin
    LoadComponentsPage(CompPagePositions, 0);
    CompPageModified := False;
  end;
end;

0
投票

Inno Setup 6 已正确设置组件对齐。所以你需要做的就是将向导表单设置得更大。

感谢 TLama 的代码简化为:

var
  CompPageModified: Boolean;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurpageID = wpSelectComponents then
  begin
    WizardForm.Height := WizardForm.Height + ScaleY(200);
    CompPageModified := True;
  end
    else
  if CompPageModified then
  begin
    WizardForm.Height := WizardForm.Height - ScaleY(200);
    CompPageModified := False;
  end;
end;
© www.soinside.com 2019 - 2024. All rights reserved.