22. Филд-форматы

Для управления поведением визуальных компонентов, работающих с данными используются объекты-посредники – филд-форматы. Для определения содержания отображаемых данных, капшенов, видимости, класса эдит-контрола, действий при сохранении данных и прочей атрибутики интерфейса свойственной приложению, db-контролы обращаются к методам и свойствам филд-форматов. Специфика поведения создается наследованием их классов.

На старте приложения создаются все прототипы – генераторы. Они хранят статическую информацию без контекста (набор данных, поле). Рабочий объект филд-формата отыскивается в списке прототипов по имени поля. То есть, для поля с конкретным именем в любой форме будет работать один и тот же функционал, реализованный в классе филд-формата.

Прототипы создаются конструктором CreateGenerator и хранятся в списках компонента TssDataBase, откуда они запрашиваются визуальными контролами по имени поля в методе GetFormat. Рабочие экземпляры создаются при помощи виртуального метода фидл-формата Duplicate, в котором кроме создания обеспечивается передача статических данных прототипа в рабочую копию. Создание генераторов в общем случае происходит автоматически, а для специфических полей это задача прикладного программиста.

По области применения филд-форматы делятся на эдит-форматы, датасет-форматы и датасторадж-форматы.

Эдит-форматы обслуживают внешний вид и поведение эдит-контролов, сохранение введенных данных в датасет и проверку допустимости значений.

Датасет-форматы обслуживают отображение заголовочных данных.

Датасторадж-форматы –  отображение значений и их сравнение.