4

我有一个对象,我们称它为控制器,它不是一个组件,它有一个启用的属性。我可以使用实时绑定将其绑定到表单上某些组件的启用属性吗?即,如果我的组件的启用属性发生变化,绑定到它的组件是否会相应地设置其启用属性?

如果 TController 是 TComponent 的后代,我可以看到该怎么做。我知道我可以将我的 TController 包装在一个组件中,但我想问是否有直接的方法可以做到这一点?

4

2 回答 2

5

这可以通过 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.Notify(控制器,“启用”);将评估所有相关的表达式。在上面的例子中 Label1.Visible 和 Checkbox1.IsChecked

于 2011-10-20T18:50:07.120 回答
1

几天前,我在我们当地的 Be-Delphi 上做了一个关于 Delphi XE2 中的 LiveBindings 的演讲。我在我的网站上发布了幻灯片和完整的“白皮书”或“教程”文档。在上一章中,我试图解释如何将组件绑定到在运行时创建的 TPerson 实例。也许它为您提供了一些有趣的信息:

Delphi XE2 中的 LiveBindings 简介

于 2011-11-21T11:49:34.103 回答