我打算为 TCheckBox 编写一个 Live Binding 源表达式:
SourceExpression = '(Checked = False) and (Enabled = True)'
执行代码时出现异常提示:
Expected EOF - trailing text in expression
Delphi XE2 Live Binding 是否支持布尔运算符?
我打算为 TCheckBox 编写一个 Live Binding 源表达式:
SourceExpression = '(Checked = False) and (Enabled = True)'
执行代码时出现异常提示:
Expected EOF - trailing text in expression
Delphi XE2 Live Binding 是否支持布尔运算符?
不,不直接支持布尔运算符。
从文档:
您可以在表达式中使用以下数学符号:
- 常量:nil True False Pi
- 算术运算符:+ - * /
- 逻辑运算符:= <> < <= > >=
- 括号 (),用于更改运算符优先级。
但是您可以使用内置函数IfAll()
,IfAny()
和IfThen()
,而不是and
,or
和not
:
SourceExpression := 'IfAll(IfThen(Checked, False, True), Enabled)'
或者您注册自己的功能。
我测试了这个 4 XE4,但它应该适用于 XE2 2。
A or B
:IfAny(A, B)
A and B
:IfAll(A, B)
not A
:IfThen(A, False, True)
A xor B
:IfAll(IfAny(A, B), IfThen(IfAll(A,B), False, True))