Inno Setup使用多个验证表达式禁用“下一步”按钮(当输入值与多个值之一匹配时)

时间:2018-12-13 11:53:14

标签: inno-setup pascalscript

我有此代码在起作用...

procedure ValidatePage;
begin 
  WizardForm.NextButton.Enabled :=
    (CompareText(InputPage6.Values[EditIndex2], 'Admin') <> 0);
end;

procedure EditChange(Sender: TObject);
begin
  ValidatePage;
end;

procedure PageActivate(Sender: TWizardPage);
begin
  ValidatePage;
end;

但是我想添加更多验证。

示例:如果您不允许EX12345EX54321

WizardForm.NextButton.Enabled :=
  (CompareText(InputPage6.Values[EditIndex2], 'EX12345') <> 0);

WizardForm.NextButton.Enabled :=
  (CompareText(InputPage6.Values[EditIndex2], 'EX54321') <> 0);

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您在问如何将多个逻辑表达式组合为一个。使用boolean operators,尤其是and运算符。

procedure ValidatePage;
begin 
  WizardForm.NextButton.Enabled :=
    (CompareText(InputPage6.Values[EditIndex2], 'EX12345') <> 0) and
    (CompareText(InputPage6.Values[EditIndex2], 'EX54321') <> 0);
end;

特别是如果您要添加更多选项,则可以通过将值首先存储到局部变量中来优化代码:

procedure ValidatePage;
var
  Value: string;
begin 
  Value := InputPage6.Values[EditIndex2];

  WizardForm.NextButton.Enabled :=
    (CompareText(Value, 'EX12345') <> 0) and
    (CompareText(Value, 'EX54321') <> 0);
end;