Форма редактирования обеспечивает пользовательский интерфейс по вводу/редактированию экземпляра объекта данных в одном либо нескольких представлениях.
Для описания формы редактирования необходимо создать UML-класс со стереотипом editform
. Например:
Генерация формы редактирования
- Класс UI-независимой формы редактирования, наследующийся от ICSSoft.STORMNET.UI.BaseIndpdEdit.
- .Net-интерфейс для зависимой формы редактирования.
- UI-зависимая форма редактирования (если необходимо).
- Атрибуты формы генерируются следующим образом:
- Если включена генерация UI-зависимой формы, то генерируется .Net-интерфейс UI-зависимой формы редактирования с определением свойства, но только, если этот атрибут публичный.
- В код UI-зависимой формы генерируется реализующее вышеуказанное интерфейсное определение виртуального свойства, а также приватный член и в обоих аксессорах код по установке/получению значения приватного члена, сопровождаемый скобками программиста.
- В код UI-независимой формы генерируется определение виртуального свойства с указанным модификатором. Если генерация UI-зависимой формы включена, то в код свойства генерируется вызов того же свойства UI-зависимой формы через интерфейс.
- Методы формы генерируются следующим образом:
- Если включена генерация UI-зависимой формы, то генерируется .Net-интерфейс UI-зависимой формы редактирования с определением метода, но только, если этот метод публичный.
- В код UI-зависимой формы генерируется реализующий вышеуказанное интерфейсное определение виртуальный метод и в нём скобка программиста (подобно тому, как описано в статье Методы классов и параметры методов.
- В код UI-независимой формы генерируется определение виртуального метода с указанным модификатором. Если генерация UI-зависимой формы включена, то в код метода генерируется вызов того же метода UI-зависимой формы через интерфейс.
Дополнительно редактируемые свойства и что как генерируется
Самое главное, в дополнительно редактируемых свойствах, - выбор класса и представления, в котором должен редактироваться объект этого класса. Указание этого производится на вкладке Составные представления
:
Можно указать только один класс и одно представление, в котором должен редактироваться объект на этой форме. Если указать несколько классов и/или представлений, все, кроме первого, будут проигнорированы.
Для того чтобы выбрать класс и представление, следует нажать на кнопку ...
:
Закладка Форма
:
Name
- Имя .Net-класса независимой формы и производное от него для зависимой, например:
winform[Name]
Description
- некоторое описание класса. DocComment
перед определением класса независимой формы
Caption
- некоторое пользовательское имя (отображается в пользовательском интерфейсе). Заголовок на форме.
GenerateDependedForm
. Если галочка установлена, - генерируется UI-зависимая (WinForm) форма пользовательского интерфейса в исходном коде, что позволяет вручную
разместить на форме элементы управления.
Если галочка не установлена, используется универсальная UI-независимая форма редактирования, на которой элементы управления, соответствующие атрибутам в представлении размещаются автоматически.
FixDependedForm
. Если галочка установлена, - UI-зависимая (WinForm) форма не перегенерируется. Это сделано для уверенности в том, что внесённые в форму изменения в части состава и расположения элементов управления не будут потеряны, что иногда происходит из-за наличия ошибок в среде Visual Studio .Net
. Если галочка не установлена генерация происходит следующим образом:
- Если представление (его имя и атрибутный состав) не изменилось, тогда перегенерируется невизуальная часть формы (методы, свойства и т.д.).
- Если полностью изменилось представление (его имя, т.е. после последней генерации было указано другое используемое представление), то визуальная часть перегенерируется полностью, все элементы управления удаляются и размещаются новые в соответствии с новым представлением.
- Если изменился атрибутный состав представления, то на форму добавляются элементы управления, соответствующие добавленным в представление атрибутам. Элементыты управления, соответствующие удалённым атрибутам не уничтожаются на форме.
Packet
, NamespacePostfix
- позволяют настроить сборку и пространство имен. См. статью Расположение сборок после генерации кода.
PBCustomAttributes
- позволяет указать, необходима ли скобка программиста непосредственно перед описанием класса для ручного
внесения атрибутов. Если галочка указана - генерируется скобка программиста для ручного
внесения .Net атрибутов перед классом независимой формы.
PBMembers
. Если галочка указана - генерируется скобка программиста для ручного
внесения членов класса независимой формы.
PropertyLookup
. Позволяет на отдельной форме настроить, какие списковые формы должны открываться с этой формы для выбора соответствующих связанных объектов (мастеров). Генерируется в код метода GetEditor
UI-независимой формы редактирования, который и возвращает тип списковой формы в зависимости от имени мастерового свойства.
В верхнем списке расположены мастеровые свойства, в нижнем выпадающем списке следует выбрать форму, которая должна открываться для выбора пользователем соотв. связанного объекта.
EditFormOperations
- настройка доступных на форме операций.
.
Позволяет указать, какие операции доступны на этой форме (соответственно, какие кнопки появляются на панели управления):
Save
- сохранениеSave and Close
- сохранение с последующим закрытием формыPrint
- печать; *Print preview
- предварительный просмотр
Генерируется:
- Если используется универсальная форма (галочка
GenerateDependedForm
не установлена), генерируется параметром при вызове конструктора зависимой формы в методеGetDpdForm()
независимой формы - Если используется генерируемая форма, генерируется напрямую в зависимой форме установкой видимости кнопок панели инструментов
PrintContainer
- имя класса со стереотипомprintform
, являющегося печатной формой, которая используется при печати с формы редактирования. В коде независимой формы генерируется перегрузка метода GetPrinter, в котором: - Если
PrintContainer
не указан, возвращается ошибкаNoSuchContainerException
- Если
PrintContainer
указан, возвращается тип контейнера
В этом методе перед возвратом значения располагается неотключаемая скобка программиста, в которой можно закодировать вручную
возвращаемый тип в случае наличия логики, которая, например, возвращает печатную форму в зависимости от свойств объекта.
ScriptName
- имя сценария, который должен использоваться этой формой. Соответствует имени EBSD-диаграммы, использующейся для описания сценария. Метод GetScript
в классе независимой формы перегружается таким образом, что возвращает из провайдера сценариев сценарий с указанным именем.
PublishToEBSD
. Если галочка указана - перед классом независимой формы генерируется указание атрибута PublishToEBSDAttribute
, который указывает доступность данного класса для использования в редакторе диаграмм сценариев.
Свойства атрибутов
Свойства атрибутов аналогичны указанным в статье Атрибуты классов данных, с учётом вышеуказанных замечаний.
Свойства методов
Свойства методов аналогичны указанным в статье Методы классов и параметры методов, с учётом вышеуказанных замечаний.