inno-setup - 根据 Inno Setup 中编辑框的更改更新控件

标签 inno-setup pascalscript

如何捕获文本框值的变化?

我正在研究如何使用 OnChange 事件函数,但我不知道如何使用它。

[Code]
var
  Page: TInputQueryWizardPage;

procedure InitializeWizard();
begin
  Page := CreateInputQueryPage(wpWelcome,
    'Personal Information', 'Who are you?',
    'Please specify your name and the company for whom you work, then click Next.');
    
  Page.Add('Server:', False);
  Page.Add('NAME:', False);
  Page.Add('LOCATION:', False);

  Page.Values[0] := ('test0');
  Page.Values[1] := ('test1');
  Page.Values[2] :=  ('string')+Page.Values[0]+('string')+Page.Values[1];
end;

我想更改一 (2) 个编辑框的文本,因为用户正在更改其他编辑框(0 和 1)的文本。

最佳答案

处理 OnChange 事件,例如:

var
  Page: TInputQueryWizardPage;

procedure EditChange(Sender: TObject);
begin
  Page.Values[2] := 'string' + Page.Values[0] + 'string' + Page.Values[1];
end;

procedure InitializeWizard();
begin
  Page := CreateInputQueryPage(...);

  Page.Add('Server:', False);
  Page.Add('NAME:', False);
  Page.Add('LOCATION:', False);

  Page.Values[0] := 'test0';
  Page.Values[1] := 'test1';

  Page.Edits[0].OnChange := @EditChange;
  Page.Edits[1].OnChange := @EditChange;
  // Reflect the initial values
  EditChange(nil);
end;

请注意,Edit[2] 可以由用户更改,因此您可能希望将其设置为只读。

  Page.Edits[2].ReadOnly := True;
  Page.Edits[2].Color := clBtnFace;

enter image description here

或者您可能实际上想使用 TLabel 来代替。

关于inno-setup - 根据 Inno Setup 中编辑框的更改更新控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49252423/

相关文章:

visual-studio-2010 - 使用哪一个,Visual Studio 安装程序或 Inno 安装程序?

delphi应用程序存在权限问题。为什么?

inno-setup - 在 Inno Setup 中设置 ToastActivator CLSID 快捷方式属性

inno-setup - Inno Setup 和 VC Redistributable 并优雅地处理退出代码 3010

inno-setup - 如何在Inno Setup Pascal脚本中检查对象是否为NULL?

image - 将图像添加到 Inno Setup 卸载程序背景

inno-setup - 更改 Inno Setup 启动时的焦点控制

inno-setup - 合并不同来源的事件函数(InitializeWizard)实现

inno-setup - 在 Inno Setup 中写入二进制文件

inno-setup - Inno Setup - 参数 "ValueData"不是有效值