Я был также разочарован качеством гибких форм, особенно управлением валидацией, поэтому я написал свой собственный контроль форм. Время от времени это немного бессистемно и глючит, поэтому не готово поделиться, но я расскажу о следующих идеях:
- Разделяется на часть макета и часть данных, соответствующие ключам. Оба в основном являются комбинациями AS3 Objects / Arrays, содержащих нужные мне свойства.
- Опишите все возможные видимые элементы в макете, необходимые валидаторы, визуальные свойства, метки и т. Д. Каждый элемент в макете является объектом в массиве. Основной массив упорядочен и отображается через VBox. Любые вложенные массивы отображаются во вложенном HBox (например, полезно для опций радио).
В части данных формы вы можете установить начальные значения, «редактируемые» свойства, свойства «модели» (для полей со списком) и тому подобное. Структура данных - это хэш объекта, в котором ключи отображаются на элементы макета. Если запись из макета не существует в определении данных, она не отображается. Это позволяет легко скрывать разделы, которые вы не хотите показывать.
Имеет разделы ошибок, в которых могут отображаться ошибки проверки или сервера.
Имеет функцию сбора, которая собирает все данные в хеш объекта.
Имеет функцию проверки, которая управляет срабатыванием валидаторов.
Не редактируемые поля отображаются как метки.
В основном я реализовал свой собственный элемент управления «Форма», и каждая запись в макете (при отображении) становится настраиваемым элементом управления «FormItem», который будет любого типа, описанного в макете. ( "Текст", "комбо", "заголовок", ...)
Трудно описать без наглядных примеров и некоторого кода, но это основная идея. Вы на правильном пути, думая, что вам нужен собственный контроль. Для универсальных форм требуется слишком много ручного хранения и много избыточного кода.