Могу ли я подключить Delphi TEdit (или аналогичный) просто к опубликованному свойству класса?

У меня была эта проблема много лет, но, возможно, теперь ее можно легко решить. Мне нужно разместить панель с несколькими элементами управления TEdit, каждый из которых должен отображать и разрешать редактирование опубликованного свойства класса. Традиционно я бы использовал TEdit (или числовую производную от библиотек Raize или Developer Express) и «подключал» события OnKeyPress и OnExit, преобразовывал текст редактирования в тип свойства и т. Д. И т. Д. Все согласно Delphi 1 (чей большой день рождения скоро!).

В наши дни у нас есть RTTI и Live Bindings, поэтому в идеале мне нужен способ сообщить TEdit (или другому аналогичному элементу управления) об одном опубликованном свойстве, и тогда будет установлена ​​необходимая двусторонняя ссылка без всех подключений и преобразований. . Инспектор объектов, конечно, выполняет эту работу, но я бы хотел более формальный настраиваемый макет с помеченными элементами управления редактированием. Было бы хорошо просто справиться с integer, float и string, и что-то вроде TDBEdit, где имя поля было моим именем свойства, было бы здорово.

Я взглянул на дизайнера «Bind Visually» (у меня XE3), но я нахожусь на неопределенной почве. Может ли кто-нибудь предложить способ сделать это? Спасибо.


person Brian Frost    schedule 06.02.2013    source источник
comment
Я нашел руководство по LiveBindings довольно простым и полным о привязка элементов управления к свойствам объекта. Он также есть в файле справки XE3 (Темы- ›RAD Studio-› Темы RAD Studio- ›Учебники). Есть конкретный пример использования TEdit в использовании TPrototypeBindSource и TPrototools. a> вместе с некоторыми другими элементами управления.   -  person Ken White    schedule 07.02.2013
comment
Не все элементы управления полностью поддерживаются LiveBindings, и вам необходимо подключить некоторые события. В качестве альтернативы вам следует взглянуть на шаблон MVVM   -  person Sir Rufo    schedule 07.02.2013
comment
@Brian: нашел пример привязки к простому старому классу здесь это может помочь. Он находится в вашей Users\Public\Documents\RAD Studio\10.0\Samples\LiveBindings\BOCollectons папке.   -  person Ken White    schedule 07.02.2013
comment
Не совсем «Delphi», но в Lazarus есть именно то, что я искал, используя «RTTI Controls» wiki.lazarus.freepascal .org / RTTI_controls   -  person Brian Frost    schedule 02.07.2013


Ответы (1)


Приведенные выше комментарии Кена Уайта и сэра Руфо являются хорошими указателями на использование Live Bindings для соединения компонентов между собой, но мне нужно подключить элементы управления к моему собственному объекту, который создается во время выполнения. Дальнейшие поиски привели меня к эта отличная статья, которая делает то, что я хочу. TBoundObject Джаррода должен быть предком для ваших собственных объектов, но, включив поле FObject, переданное в конструктор, и заменив его использование 'Self' на FObject, вы можете создать экземпляр автономного 'TObjectBinder', который легко соединяет различные стандартные элементы управления с опубликованными характеристики.

person Brian Frost    schedule 07.02.2013