如何添加带有链接的按钮/图像到我的设置向导的左下角?

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

我的产品非常依赖社区并且非常基础,所以我希望在我的设置向导的左下角实现一些带有链接的按钮(捐赠链接和 github 链接)。

我在这里看到了类似的问题(如何在向导窗口的左下角添加图像横幅?),但无法像 Inno Setup 本身的向导中那样完全获得可点击的链接,它只是 一个 位图图像。我不确定是否需要将马丁在前面提到的问题中的答案与“如何添加可点击图像”或“如何添加超链接”问题之一的其他答案结合起来,但我需要一些帮助想出了一个类似于 Inno Setup 按钮的解决方案。

Inno Setup example

Inno 设置示例

inno-setup pascalscript inno-setup-v6
1个回答
0
投票

使用 GitHub

/issrc 中的
setup.iss
isdonateandmail.iss 脚本作为示例,我能够重新创建不同大小的按钮,位置略有改变,同时还添加了第三个按钮。

就像在

Inno Setupsetup.iss 脚本中一样,我使用 
#include
buttons.iss
脚本添加到我现有的主脚本中,使我的代码易于解析。

// How to add the separate script to your existing main script
#include "TLS_Buttons.iss"

[Setup]
AppName=My Program
AppVersion=1.5

// ...

其他一切都应该很容易理解,但这里有一个简短的解释:

  • [CustomMessages]
    部分包含将鼠标悬停在按钮图像上时显示的文本,将使用
    TBitmapImage.Hint

    调用这些文本
  • OnClick
    程序将是您的图像/按钮链接到的地方

  • 通过预先调用

    <event('InitializeWizard')>
    ,您可以重命名
    InitializeWizard
    过程,并避免[重复]错误(如果您的主脚本中已经有
    InitializeWizard
    过程)

如果您仍然为此苦苦挣扎,请随时对此帖子或此答案发表评论。我不能保证我会很快回复,但我会尽力。

[Files]
Source: "donate.bmp"; Flags: dontcopy noencryption
Source: "discord.bmp"; Flags: dontcopy noencryption
Source: "github.bmp"; Flags: dontcopy noencryption

[CustomMessages]
DonateHint=Donate to support The Lewd Series - Thank you!
DiscordHint=Community Discord
GitHubHint=GitHub Repository

[Code]
procedure DonateImageOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExecAsOriginalUser('open', 'https://www.paypal.com/us/home', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure DiscordImageOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExecAsOriginalUser('open', 'https://discord.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure GithubImageOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExecAsOriginalUser('open', 'https://github.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

<event('InitializeWizard')> // Allows for 'InitializeWizard' to be used in Main Script without raising duplicate error
procedure TLSButtonsInitializeWizard;
var
  ImageFileName: String;
  DonateImage, DiscordImage, GithubImage: TBitmapImage;
  BevelTop: Integer;
begin
  if WizardSilent then
    Exit;

  ImageFileName := ExpandConstant('{tmp}\donate.bmp');
  ExtractTemporaryFile(ExtractFileName(ImageFileName));

  DonateImage := TBitmapImage.Create(WizardForm);
  DonateImage.AutoSize := True;
  DonateImage.Bitmap.LoadFromFile(ImageFileName);
  DonateImage.Hint := CustomMessage('DonateHint');
  DonateImage.ShowHint := True;
  DonateImage.Anchors := [akLeft, akBottom];
  BevelTop := WizardForm.Bevel.Top;
  DonateImage.Top := BevelTop + (WizardForm.ClientHeight - BevelTop - DonateImage.Bitmap.Height) div 2 + ScaleY(3);
  DonateImage.Left := DonateImage.Top - BevelTop - ScaleX(5);
  DonateImage.Cursor := crHand;
  DonateImage.OnClick := @DonateImageOnClick;
  DonateImage.Parent := WizardForm;

  ImageFileName := ExpandConstant('{tmp}\discord.bmp');
  ExtractTemporaryFile(ExtractFileName(ImageFileName));

  DiscordImage := TBitmapImage.Create(WizardForm);
  DiscordImage.AutoSize := True;
  DiscordImage.Bitmap.LoadFromFile(ImageFileName);
  DiscordImage.Hint := CustomMessage('DiscordHint');
  DiscordImage.ShowHint := True;
  DiscordImage.Anchors := [akLeft, akBottom];
  DiscordImage.Top := DonateImage.Top 
  DiscordImage.Left := DonateImage.Left + DonateImage.Width + ScaleX(10);
  DiscordImage.Cursor := crHand;
  DiscordImage.OnClick := @DiscordImageOnClick;
  DiscordImage.Parent := WizardForm;

  ImageFileName := ExpandConstant('{tmp}\github.bmp');
  ExtractTemporaryFile(ExtractFileName(ImageFileName));

  GithubImage := TBitmapImage.Create(WizardForm);
  GithubImage.AutoSize := True;
  GithubImage.Bitmap.LoadFromFile(ImageFileName);
  GithubImage.Hint := CustomMessage('GitHubHint');
  GithubImage.ShowHint := True;
  GithubImage.Anchors := [akLeft, akBottom];
  GithubImage.Top := DiscordImage.Top
  GithubImage.Left := DiscordImage.Left + DiscordImage.Width + ScaleX(10);
  GithubImage.Cursor := crHand;
  GithubImage.OnClick := @GithubImageOnClick;
  GithubImage.Parent := WizardForm;
end;

我的按钮示例,没有添加透明度,我将背景颜色与

WizardForm
匹配 Example

© www.soinside.com 2019 - 2024. All rights reserved.