Installation Inno设置页面描述相互重叠的标签

Installation Inno设置页面描述相互重叠的标签,installation,windows-installer,inno-setup,Installation,Windows Installer,Inno Setup,我最近切换到Inno设置,这太棒了! 我几乎可以让大部分事情都顺利进行,只是我在某些事情上遇到了麻烦 基本上,我正在尝试创建自己的标题设计,并尝试使页面标题/页面描述透明。但是,它们在换页时相互重叠。 (请参考图片) 代码: 此外,我甚至不确定这是否是最好的方法。如果有人有任何建议,我很乐意听取他们的意见。正如您正确指出的,您多次创建自己的标签。更具体地说,每次显示新页面时(每次按下“下一步”或“后退”按钮时)。您只需要创建一次标签,最好是在向导表单初始化事件中创建,如。除此之外,您还需要在每

我最近切换到Inno设置,这太棒了! 我几乎可以让大部分事情都顺利进行,只是我在某些事情上遇到了麻烦

基本上,我正在尝试创建自己的标题设计,并尝试使页面标题/页面描述透明。但是,它们在换页时相互重叠。 (请参考图片)

代码:


此外,我甚至不确定这是否是最好的方法。如果有人有任何建议,我很乐意听取他们的意见。

正如您正确指出的,您多次创建自己的标签。更具体地说,每次显示新页面时(每次按下“下一步”或“后退”按钮时)。您只需要创建一次标签,最好是在向导表单初始化事件中创建,如。除此之外,您还需要在每次页面更改时更改标签的标题。为了达到最佳效果,您需要使用该事件。所以,要使页面描述标签透明(我遗漏了什么),可以使用如下脚本:

[Code]
var
  DescLabel: TLabel;

procedure InheritBoundsRect(ASource, ATarget: TControl);
begin
  ATarget.Left := ASource.Left;
  ATarget.Top := ASource.Top;
  ATarget.Width := ASource.Width;
  ATarget.Height := ASource.Height;
end;

procedure InitializeWizard;
begin
  DescLabel := TLabel.Create(WizardForm);
  DescLabel.Parent := WizardForm.PageDescriptionLabel.Parent;  
  DescLabel.WordWrap := WizardForm.PageDescriptionLabel.WordWrap;
  DescLabel.AutoSize := WizardForm.PageDescriptionLabel.AutoSize;
  DescLabel.Transparent := True;
  InheritBoundsRect(WizardForm.PageDescriptionLabel, DescLabel);

  WizardForm.PageDescriptionLabel.Visible := False;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  DescLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;

正如您正确指出的,您多次创建标签。更具体地说,每次显示新页面时(每次按下“下一步”或“后退”按钮时)。您只需要创建一次标签,最好是在向导表单初始化事件中创建,如。除此之外,您还需要在每次页面更改时更改标签的标题。为了达到最佳效果,您需要使用该事件。所以,要使页面描述标签透明(我遗漏了什么),可以使用如下脚本:

[Code]
var
  DescLabel: TLabel;

procedure InheritBoundsRect(ASource, ATarget: TControl);
begin
  ATarget.Left := ASource.Left;
  ATarget.Top := ASource.Top;
  ATarget.Width := ASource.Width;
  ATarget.Height := ASource.Height;
end;

procedure InitializeWizard;
begin
  DescLabel := TLabel.Create(WizardForm);
  DescLabel.Parent := WizardForm.PageDescriptionLabel.Parent;  
  DescLabel.WordWrap := WizardForm.PageDescriptionLabel.WordWrap;
  DescLabel.AutoSize := WizardForm.PageDescriptionLabel.AutoSize;
  DescLabel.Transparent := True;
  InheritBoundsRect(WizardForm.PageDescriptionLabel, DescLabel);

  WizardForm.PageDescriptionLabel.Visible := False;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  DescLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;

我相信我知道这个问题,每次改变表单时,我都会创建一个新的“TLabel”,所以当然,在另一个表单上会创建一个新的“TLabel”;但是,我仍然不太确定如何修复它。我相信我知道问题所在,每次更改表单时,我都会创建一个新的“TLabel”,因此当然会在另一个表单的基础上创建一个新表单;但是,我仍然不太确定如何修复它。谢谢你,特拉玛!今天我成了你的超级粉丝,哈哈。我今天遇到的所有问题,大部分都是你在Stackoverflow上回答的。对不起,特拉玛,我以前确实尝试过这种方法,但问题是它不是每次页面更改都会更改。它以TD为“*”开始,TD保持这种状态。这就是为什么我搬到了纽约。因此,基本上,它仍然没有完全发挥作用。有没有一种方法可以全局定义TD,只需更改页面更改上的值?或者另一种方式?谢谢!它现在工作得很好。此外,由于某些原因,启用“WordWrap”会使标签框的宽度在每次页面更改时越来越小。你可以通过删除“DescLabel.WordWrap”来解决这个问题。我打赌这是由于自动调整大小造成的。原始
PageDescriptionLabel
将其设置为False,而您创建的标签默认为True。我会更新这个…谢谢你,特拉玛!今天我成了你的超级粉丝,哈哈。我今天遇到的所有问题,大部分都是你在Stackoverflow上回答的。对不起,特拉玛,我以前确实尝试过这种方法,但问题是它不是每次页面更改都会更改。它以TD为“*”开始,TD保持这种状态。这就是为什么我搬到了纽约。因此,基本上,它仍然没有完全发挥作用。有没有一种方法可以全局定义TD,只需更改页面更改上的值?或者另一种方式?谢谢!它现在工作得很好。此外,由于某些原因,启用“WordWrap”会使标签框的宽度在每次页面更改时越来越小。你可以通过删除“DescLabel.WordWrap”来解决这个问题。我打赌这是由于自动调整大小造成的。原始
PageDescriptionLabel
将其设置为False,而您创建的标签默认为True。我会更新这个。。。