Can we use boolean operator in Delphi XE2 LiveBinding expression?

1.1k Views Asked by At

I am planning to write a Live Binding source expression for TCheckBox:

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

When execute the code, an exception prompted:

Expected EOF - trailing text in expression

Is Delphi XE2 Live Binding support boolean operator?

1

There are 1 best solutions below

0
On

No, boolean operators are not supported directly.

From the docu:

You can use the following math symbols in your expressions:

  • Constants: nil True False Pi
  • Arithmetic operators: + - * /
  • Logic operators: = <> < <= > >=
  • Parentheses, (), to change operator precedence.

But you can use the builtin functions IfAll(), IfAny() and IfThen() instead of and, or and not:

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

Or you register your own functions.

I tested this 4 XE4, but it should work for 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))