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 для деталей о том, как решена область.

  1. Component используется, если назначено, в противном случае
  2. DataObject используется, если назначено, в противном случае
  3. Owner используется

Таким образом, самое простое решение, вероятно, состоит в том, чтобы оставить Component свойство (вашего компонента TBindScope) не назначается и делает ваш Object собственность владельца формы.

Другие вопросы по тегам