是否有可能将多个组件绑定(使用活动绑定)到一个(非组件)对象



我有一个对象,我们叫它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简介

最新更新