Можно ли привязать (используя live-bindings) несколько компонентов к (не компонентному) объекту? - PullRequest
4 голосов
/ 20 октября 2011

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

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

Ответы [ 2 ]

4 голосов
/ 20 октября 2011

Это возможно с 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 (Controller, 'Enabled');оценит все соответствующие выражения.В приведенном выше примере Label1.Visible и Checkbox1.IsChecked

1 голос
/ 21 ноября 2011

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

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

...