我们可以在Delphi XE2 LiveBinding表达式中使用布尔运算符吗?

我们可以在Delphi XE2 LiveBinding表达式中使用布尔运算符吗?,delphi,delphi-xe2,livebindings,Delphi,Delphi Xe2,Livebindings,我计划为TCheckBox编写一个实时绑定源表达式: SourceExpression = '(Checked = False) and (Enabled = True)' 执行代码时,会出现异常提示: Expected EOF - trailing text in expression Delphi XE2 Live Binding是否支持布尔运算符?否,不直接支持布尔运算符 从: 可以在表达式中使用以下数学符号: 常数:零真假π 算术运算符:+-*/ 逻辑运算符:== 用括号(())更

我计划为TCheckBox编写一个实时绑定源表达式:

SourceExpression = '(Checked = False) and (Enabled = True)'
执行代码时,会出现异常提示:

Expected EOF - trailing text in expression

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

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

从:

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

  • 常数:零真假π
  • 算术运算符:+-*/
  • 逻辑运算符:=<>=
  • 用括号(())更改运算符优先级
但是您可以使用而不是
而不是

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

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

  • A或B
    IfAny(A,B)
  • A和B
    IfAll(A,B)
  • 非A
    如果(A,False,True)
  • A异或B
    IfAll(IfAny(A,B),IfThen(IfAll(A,B),False,True))

只是一个猜测-您是否尝试过使用
SourceExpression='(未选中)和(启用)
?为什么?因为每当我在布尔表达式中看到
=
,但现在没有Delphi XE2时,我的眼睛都会痛…
不检查
不受支持,所以我使用
检查=False
看看这个问题:。接受的答案注册一个布尔表达式计算器。AFAIK您不能在LiveBinding表达式中使用逻辑运算符(
、`not´、`xor´、`shl´、`shr´):(,作为解决方法,您可以注册一个自定义方法来计算逻辑运算。shl和shr不是逻辑运算符。不可能相信活动绑定不支持逻辑运算符。