我有一个对象,我们叫它Controller它不是一个组件,它有一个enabled属性。我可以使用live-bindings将其绑定到窗体上某些组件的启用属性上吗?也就是说,如果我的组件的启用属性发生了变化,绑定到它的组件有相应的启用属性设置?
我可以看到如何做到这一点,如果TController是一个TComponent的后裔。我知道我可以包装我的TController在一个组件,但我问是否有一个直接的方式做到这一点?
可以使用BindScope: BindScope1。DataObject:= Controller;
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
UseAppManager = True
Left = 464
Top = 56
object BindExpression1: TBindExpression
Category = 'Binding Expressions'
ControlComponent = Label1
SourceComponent = BindScope1
SourceExpression = 'enabled'
ControlExpression = 'visible'
NotifyOutputs = False
Direction = dirSourceToControl
end
object BindExpression2: TBindExpression
Category = 'Binding Expressions'
ControlComponent = CheckBox1
SourceComponent = BindScope1
SourceExpression = 'enabled'
ControlExpression = 'IsChecked'
NotifyOutputs = False
Direction = dirSourceToControl
end
end
TBindings。通知(控制器,"启用");将计算所有相关表达式。在上面的例子中,Label1。可见和Checkbox1。完成
几天前,我在我们当地的Be-Delphi上做了一个关于Delphi XE2中的LiveBindings的演讲。我在我的网站上发布了幻灯片和一份完整的"白皮书"或"教程"文件。在上一章中,我试图解释如何将组件绑定到运行时创建的TPerson实例。也许里面有你感兴趣的信息:
Delphi XE2中的LiveBindings简介