放大的 Inno Setup 向导中的长组件描述

Long components descriptions in enlarged Inno Setup wizard

我正在尝试让这个 Martin Prikryl 代码在我的设置中工作:Long descriptions on Inno Setup components

但是当我将 WizardSizePercent=121 放在 [Setup] 部分时,代码可以工作,但它有一些问题导致组件标题被 ComponentsList 重叠。

并且我尝试更改下面的代码(原始代码的结尾)但是没有用。这样做唯一可以改变的是改变 WizardForm.ComponentsList.Height.

的高度

谁能帮我解决这个问题?

procedure InitializeWizard();
begin
  SetTimer(0, 0, 50, CreateCallback(@HoverTimerProc));

  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;

  WizardForm.ComponentsList.Height :=
    WizardForm.ComponentsList.Height - CompLabel.Height - ScaleY(8);
end;

我设法通过添加一个布尔变量解决了这个问题。 StopCall变量以false开头,如果是false,则执行代码,然后设置为true.

因此下一次执行CurPageChanged时,该值将是true并且代码不会添加新的标题。

var StopCall: Boolean;

procedure CurPageChanged(CurPageID: Integer);
begin
  if StopCall = false then
    begin
      if CurPageID = wpWelcome then
        begin
          SetTimer(0, 0, 50, CreateCallback(@HoverTimerProc));

          CompLabel := TLabel.Create(WizardForm);
          CompLabel.Parent := WizardForm.SelectComponentsPage;
          CompLabel.Left := WizardForm.ComponentsList.Left;
          CompLabel.Width := WizardForm.ComponentsList.Width;
          CompLabel.Height := ScaleY(22);
          CompLabel.Top := WizardForm.ComponentsList.Top + WizardForm.ComponentsList.Height - CompLabel.Height;
          CompLabel.AutoSize := False;
          CompLabel.WordWrap := True;

          WizardForm.ComponentsList.Height := WizardForm.ComponentsList.Height - CompLabel.Height - ScaleY(8);
          StopCall := true;
        end;
    end;
end;