Особенности генерации и свойства формы редактирования, операции, атрибуты и методы формы редактирования

Форма редактирования обеспечивает пользовательский интерфейс по вводу/редактированию экземпляра объекта данных в одном либо нескольких представлениях.
Для описания формы редактирования необходимо создать 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, который указывает доступность данного класса для использования в редакторе диаграмм сценариев.

Свойства атрибутов

Свойства атрибутов аналогичны указанным в статье Атрибуты классов данных, с учётом вышеуказанных замечаний.

Свойства методов

Свойства методов аналогичны указанным в статье Методы классов и параметры методов, с учётом вышеуказанных замечаний.