我们可以在Delphi XE2 LiveBinding表达式中使用布尔运算符吗?
我计划为TCheckBox编写一个实时绑定源表达式:我们可以在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是否支持布尔运算符?否,不直接支持布尔运算符 从: 可以在表达式中使用以下数学符号: 常数:零真假π 算术运算符:+-*/ 逻辑运算符:== 用括号(())更
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不是逻辑运算符。不可能相信活动绑定不支持逻辑运算符。