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

#delphi #delphi-xe2 #livebindings

#delphi #delphi-xe2 #живые привязки

Вопрос:

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

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

Ответ №1:

Это возможно с помощью 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.Visible и Checkbox1.IsChecked

Ответ №2:

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

Введение в живые привязки в Delphi XE2

Комментарии:

1. ссылка не работает, но ее материал можно найти по адресу: web.archive.org/web/20190622014700/http://www.devia.be/news /… slideshare.net/StefaanLesage /… scribd.com/document/73106743/Be-Delphi-Live-Bindings (хотя, вероятно, с тех пор жизненные связи эволюционировали)