Это диалоги для изменения и добавления данных. Изменения могут вноситься в несколько записей одновременно.
TRootCustomEditor
- базовый предок для карточек. Он содержит компонент TssPageControl
для расположения контролов и панель TssTaskPanel для отображения выбранных для редактирования элементов. Здесь реализовано управление активным контролом при открытии формы, локальная проверка заполнения обязательных полей, базовый функционал для формирования вкладок (см. Расположение контролов в карточках), заполнения данных значениями по умолчанию, работы нумератора документов, проверки допустимости значений, сохранения данных и удаления из карточки.
Основные виртуальные методы:
InitAppendDataStorage
- инициализация. Параметр _DS
– добавляемый набор, в котором назначаются данные по умолчанию.
PrepareDataForEdit
– подготовка данных для редактирования. Здесь возможно изменение данных при открытии формы для каких-либо целей.
PreparePostData
– изменение данных перед сохранением.
ValidateData
– проверка допустимости значений. Здесь генерируется исключение когда значения не удовлетворяют критериям проверки.
InitSubForms
– здесь собрано создание встроенных форм.
EditDataSet
, в котором задаются свойства запроса. Форма передаёт в запрос табличный параметр %Selection
для фильтрации запроса выбранными для редактирования данными. В параметре по умолчанию одно ключевое поле. Эта карточка сохраняет данные на сервер.
TRootMDIClipboardEditor
– здесь выделен функционал для использования карточки при вставке из буфера и плавающего справочника.
TRootMDINotesEditor
– предок для корневых карточек с заметками. То есть, это карточка, которая управляет заметками в семействе данных. Здесь формируется запрос к серверу для получения данных заметок, контролы для них и сохранение на сервер.
TRootMDINotesWithSecretLevelsEditor
– базовый класс для карточек объектов базы с грифом доступа.
TRootEditor
– базовый предок для карточек использующих данные датасета мастер-формы (списка). Изменения сохраняются на сервер с помощью того же мастер-датасета.
TRootChildEditor
– карточка для встроенных списков.
Чтобы добавить карточку для формы-списка надо пронаследовать форму от соответствующего класса и вернуть этот класс в методе GetEditorClass формы-списка, откуда она открывается. На форме-карточке нужно расположить контролы и задать свойства запроса к серверу, если это карточка со своим запросом. В свойстве Streams нужно указать ключевое поле в скобках для всех потоков, иначе изменение данных не заработает. Например:
MoveDocuments(mdoc_ID);MoveDocumentItems(mdit_ID)
Также нужно создать прототипы специфичных эдит-форматов. Подробнее об этом рассказано в главе Филд-форматы.