Формы редактирования записей справочников

Если требуемый уровень настройки внешнего вида формы редактирования записей справочника превышает возможности, предлагаемые системой Ultima Businessware® (см. раздел Системные инструменты настройки внешнего вида экранных форм), можно создать свою форму редактирования записей любого справочника.

Для упрощения работы в системе реализована следующая иерархия классов:

DevBookmark_Scripts BaseEditForm

tree DevBookmark_Scripts BaseDictionaryEditForm

Для реализации формы редактирования записей справочника необходимо унаследовать ее от формы BaseDictionaryEditForm и реализовать интерфейс IRecordEditor<Т>, где Т – тип справочника.

Система для редактирования записи справочника будет искать форму, реализующую интерфейс IRecordEditor<T>. Если в системе не окажется ни одной такой формы, откроется базовая форма редактирования записи справочника. Если в системе окажется более одной такой формы, то система выдаст ошибку. Это позволяет избежать неочевидного поведения системы при ошибке настройки системы администратором.

Прикладной разработчик может запросить открытие формы редактирования записи справочника через класс DevBookmark_Scripts DictionaryHelper с помощью методов EditRecord<T> и BeginEditRecord<T>, где Т – тип справочника, форму редактирования записи которого требуется открыть. Методы открывают модальную и немодальную формы редактирования соответственно.

Рассмотрим создание формы редактирования записей справочника на примере все того же справочника транспортных средств Vehicle:

Example_CreateDictList2

В проекте модуля создаем новый объект Windows Form, наследуем его от класса BaseDictionaryEditForm (из пространства имен Ultima.Client.Dictionaries) и реализуем интерфейс IRecordEditor<T>:

public partial class VehicleEditForm : BaseDictionaryEditForm, IRecordEditor<Vehicle>

{

 public VehicleEditForm()

 {

         InitializeComponent();

 }

}

Example_CreateDictEdit1

К созданной форме необходимо подключить источник данных. Для этого добавляем на нее элемент управления bindingSource и подключаем к нему объект метаданных Ultima.Metadata.Vehicle:

Example_CreateDictEdit2

Example_CreateDictList8

Example_CreateDictEdit3

Назначаем в параметрах формы добавленный элемент bindingSource в качестве источника данных DataSourse:

Example_CreateDictEdit4

Теперь можно добавлять на форму элементы управления, предназначенные для отображения свойств записи справочника. Каждый из них через свойство DataBindings -> EditValue подключаем к соответствующим свойствам справочника в bindingSorce:

Example_CreateDictEdit5

Для элемента управления DictionaryLookupEdit, с помощью которого отображается модель транспортного средства (ModelID), дополнительно выбираем в свойстве DictionaryType тип справочника, записи которого он отображает – Ultima.Metadata.VehicleModel.

По завершении компилируем проект, копируем созданные библиотеки в папку модуля в клиентском приложении Client/ClientModules/TradeTestSolution, перезагружаем метаданные и открываем созданную форму редактирования записи справочника:

Example_CreateDictEdit6