Можно ли связать (используя живые привязки) несколько компонентов с (не компонентным) объектом?

У меня есть объект, давайте назовем его Контроллер, который НЕ является компонентом, у него есть включенное свойство. Могу ли я использовать live-bindings, чтобы сказать, привязать его к включенным свойствам некоторых компонентов в форме? т. е. если включенное свойство моего компонента изменяется, компоненты, которые привязаны к нему, имеют свое включенное свойство соответствующим образом?

Я вижу, как это сделать, если TController был потомком TComponent. Я знаю, что могу обернуть свой TController в компонент, но я спрашиваю, есть ли прямой способ сделать это?


person Steve    schedule 20.10.2011    source источник


Ответы (2)


Это возможно с 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

person Arjen van der Spek    schedule 20.10.2011

Несколько дней назад я провел презентацию LiveBindings в Delphi XE2 в нашем местном Be-Delphi. Я опубликовал слайды и полный документ «Белая книга» или «Учебник» на своем веб-сайте. В предыдущей главе я попытался объяснить, как привязать компоненты к экземпляру TPerson, созданному во время выполнения. Возможно, у него есть для вас интересная информация:

Введение в LiveBindings в Delphi XE2

person Stefaan    schedule 21.11.2011