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

时间:2012-08-03 09:04:45

标签: delphi delphi-xe2 livebindings

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

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

执行代码时,提示异常:

Expected EOF - trailing text in expression

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

1 个答案:

答案 0 :(得分:1)

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

来自docu

  

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

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

但您可以使用the builtin functions IfAll(), IfAny() and IfThen()代替andornot

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

或者你register your own functions

我测试了这个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))