Livebindings BindScope Notification
Чтобы начать работу с живыми привязками, я сейчас пишу демо-код. Но в какой-то момент у меня возникла проблема, когда я не нашел никакой документации.
У меня есть форма с несколькими TEdit и я хочу связать их с TBindScope со свойствами объекта. Я устанавливаю BindScope и BindingList, и все работает в тот момент, когда я делаю BindExpression1.Active:= true;
Но теперь я изменяю свойства объекта и хочу уведомить BindingList об обновлении.
Здесь проблема. Я не могу найти способ уведомить BindingList, поэтому он обновляет значения. Но если я делаю BindExpression1.Evaluate, он синхронизирует значения.
Я пытался с помощью
- BindingList.Notify (BindScope, 'Object.Property')
- BindingList.Notify (BindScope, 'Object')
- BindingList.Notify (Object, 'Property');
- BindingList.Notify (BindScope, 'Свойство');
- BindingList.Notify (BindScope, 'Active');
Ничто, кажется, не работает для уведомления.
PS: я знаю, что в этом случае BindScope не обязательно нужен. Но так как это демонстрационный код для понимания, я хотел бы знать, как он работает с BindScope.
Благодарю.
1 ответ
Смотрите исходный код TCustomBindScope.GetValue
для деталей о том, как решена область.
Component
используется, если назначено, в противном случаеDataObject
используется, если назначено, в противном случаеOwner
используется
Таким образом, самое простое решение, вероятно, состоит в том, чтобы оставить Component
свойство (вашего компонента TBindScope) не назначается и делает ваш Object
собственность владельца формы.