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