3

我打算为 TCheckBox 编写一个 Live Binding 源表达式:

SourceExpression = '(Checked = False) and (Enabled = True)'

执行代码时出现异常提示:

Expected EOF - trailing text in expression

Delphi XE2 Live Binding 是否支持布尔运算符?

4

1 回答 1

1

不,不直接支持布尔运算符。

文档

您可以在表达式中使用以下数学符号:

  • 常量:nil True False Pi
  • 算术运算符:+ - * /
  • 逻辑运算符:= <> < <= > >=
  • 括号 (),用于更改运算符优先级。

但是您可以使用内置函数IfAll(),IfAny()IfThen(),而不是and,ornot:

SourceExpression := 'IfAll(IfThen(Checked, False, True), Enabled)'

或者您注册自己的功能

我测试了这个 4 XE4,但它应该适用于 XE2 2。

  • A or BIfAny(A, B)
  • A and BIfAll(A, B)
  • not AIfThen(A, False, True)
  • A xor BIfAll(IfAny(A, B), IfThen(IfAll(A,B), False, True))
于 2016-06-10T15:03:16.477 回答