В Delphi XE2 LiveBindings мне нужно привязать элемент управления VCL любого типа к свойству любого типа в произвольном (некомпонентном) объекте.Я могу сделать это в одном направлении.Но мне нужно сделать это двунаправленно.
Допустим, я хочу связать строку TPerson.PersonName: с TEdit.Text.
То, что у меня сейчас есть, просто.
- Создайте новое приложение VCL, добавьте TBindScope, TBindingsList, TEdit.
- Создайте экземпляр TPerson с именем person1.
- Используя BindingList, добавьте TBindExpressionсвойство.
- С помощью BindExpression
- установить ControlComponent на Edit1
- установить ControlExpression на 'Text'
- установить SourceComponent в BindScope1
- установить SourceExpression в PersonName
- Добавить кнопку;к событию Click я добавляю: BindScope1.DataObject: = person1;
- Добавить кнопку;к событию Click, которое я добавляю (необходимо только одно, но пока оно не сработает, я попробую их оба).
- TBindings.Notify (sender, '');
- BindingsList1.Notify (sender, '');
Первая кнопка связывается в первом направлении.Вторая кнопка, кажется, никогда не записывает значение обратно в свойство person1.PersonName.
Я экспериментировал с кодом уведомления, направлением привязки, типами привязки, выражениями, SourceMember и т. Д. Иногда я получаю ошибки времени выполнения в конфигурации bindexpression, в остальное время привязка просто однонаправленная.
Я ожидаю нажать вторую кнопку и увидеть содержимое Edit1.Text, записанное в person1.PersonName.
Если мне придется сделать все это из кода, я рассмотрю его, и такие примеры приветствуются, но я действительно хочу сделать это через дизайнер, если это возможно.
Обратите внимание, что яне заинтересованы в связывании между двумя элементами управления.
Обратите внимание, что я уже скачал и проверил примеры проектов LiveBinding, но не нашел ни одного, который бы делал это.Если это не так, пожалуйста, укажите это.Я также прочитал DocWiki.Он не распространяется на двунаправленную привязку, за исключением использования элементов управления DB LiveBinding.Я не использую элементы управления DB LiveBinding и не использую DataSet.Поэтому, если вы не объясните мне, почему я должен их использовать, мне не понадобится информация об этих элементах управления.