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