【问题标题】:Reading values from custom Inno Setup wizard pages without using global variables从自定义 Inno Setup 向导页面读取值而不使用全局变量
【发布时间】:2016-08-05 15:13:41
【问题描述】:

在此用于创建自定义 CreateInputOptionPage 的支持页面上,他们建议通过将页面的值分配给变量来存储它们。但目前尚不清楚这项任务应该何时进行。'

据我所知,如果您在创建页面时分配此权限,您将获得默认值。这是有道理的,因为在创建页面时,用户还没有输入任何“输入查询”。

因此,当单击“下一步”按钮时,我使用function NextButtonClick(CurPageID: Integer): Boolean; 将页面中的值分配给一个变量

为此,我需要在 NextButtonClick 函数中访问页面的变量 (Page.Values[0])。由于Page 是在不同的函数中定义的,因此访问这些值以使Page 成为全局变量的唯一方法是什么?这就是我决定要做的事情,但我想知道是否有人可以替代全局变量。

到目前为止我的代码存根。

[Code]

var
  Page: TInputOptionWizardPage;
  InstallationTypeIsClient: boolean;

procedure InitializeWizard();
begin
  Page := CreateInputOptionPage(wpWelcome,'Installation Type', 'Select Installation Type', 'No really, do some selecting', True, False)
  Page.Add('Server Install');
  Page.Add('Client Install');
  Page.Values[1] := True;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID=100 then
  begin
    InstallationTypeIsClient := Page.Values[1];
    MsgBox('InstallationTypeIsClient value is ' + Format('%d', [InstallationTypeIsClient]), mbInformation, MB_OK);
  end;
  Result := True;
end;

【问题讨论】:

    标签: inno-setup pascalscript


    【解决方案1】:

    使用全局变量来存储对自定义页面的引用是正确且最简单的方法。

    相关问题:Inno Setup: Access to custom control from OnClick event of another control

    虽然您是否真的需要将用户值存储到另一个变量是值得怀疑的。只需在需要时从自定义页面读取值即可。

    在一般情况下,确实不赞成使用全局变量。但这就是,当您开发独立代码时。在这种情况下,您只是为现有应用程序实现事件挂钩,因此您别无选择。


    唯一的另一种方法是在WizardForm 的子控件中递归查找自定义页面。代码很多,效率很低。

    有关递归组件迭代的示例,请参阅我对 Inno Setup: OnHover event 的回答。

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多