我计划为TCheckBox编写一个实时绑定源表达式:
SourceExpression = '(Checked = False) and (Enabled = True)'
执行代码时,提示了一个异常:
Expected EOF - trailing text in expression
Delphi XE2实时绑定支持布尔运算符吗?
我计划为TCheckBox编写一个实时绑定源表达式:
SourceExpression = '(Checked = False) and (Enabled = True)'
Expected EOF - trailing text in expression
IfAll()
、IfAny()
和IfThen()
代替and
、or
和not
。SourceExpression := 'IfAll(IfThen(Checked, False, True), Enabled)'
或者你可以注册自己的函数。
我在XE4上测试过,但是它应该也适用于XE2。
A 或 B
: IfAny(A, B)
A 且 B
: IfAll(A, B)
非 A
: IfThen(A, False, True)
A 异或 B
: IfAll(IfAny(A, B), IfThen(IfAll(A,B), False, True))
SourceExpression = '(not Checked) and (Enabled)'
吗?为什么呢?因为每当我看到布尔表达式中的=
时,我的眼睛就会受伤 :-) 但是现在没有 Delphi XE2... - TLamaand
,or
,not
,xor
,shl
,shr
):(,但可以注册自定义方法来评估逻辑操作以解决此问题。 - RRUZ