Если требуемый уровень настройки внешнего вида формы редактирования записей справочника превышает возможности, предлагаемые системой Ultima Businessware® (см. раздел Системные инструменты настройки внешнего вида экранных форм), можно создать свою форму редактирования записей любого справочника.
Для упрощения работы в системе реализована следующая иерархия классов:
BaseEditForm
BaseDictionaryEditForm
Для реализации формы редактирования записей справочника необходимо унаследовать ее от формы BaseDictionaryEditForm и реализовать интерфейс IRecordEditor<Т>, где Т – тип справочника.
Система для редактирования записи справочника будет искать форму, реализующую интерфейс IRecordEditor<T>. Если в системе не окажется ни одной такой формы, откроется базовая форма редактирования записи справочника. Если в системе окажется более одной такой формы, то система выдаст ошибку. Это позволяет избежать неочевидного поведения системы при ошибке настройки системы администратором.
Прикладной разработчик может запросить открытие формы редактирования записи справочника через класс DictionaryHelper с помощью методов EditRecord<T> и BeginEditRecord<T>, где Т – тип справочника, форму редактирования записи которого требуется открыть. Методы открывают модальную и немодальную формы редактирования соответственно.
Рассмотрим создание формы редактирования записей справочника на примере все того же справочника транспортных средств Vehicle:
В проекте модуля создаем новый объект Windows Form, наследуем его от класса BaseDictionaryEditForm (из пространства имен Ultima.Client.Dictionaries) и реализуем интерфейс IRecordEditor<T>:
public partial class VehicleEditForm : BaseDictionaryEditForm, IRecordEditor<Vehicle> { public VehicleEditForm() { InitializeComponent(); } } |
К созданной форме необходимо подключить источник данных. Для этого добавляем на нее элемент управления bindingSource и подключаем к нему объект метаданных Ultima.Metadata.Vehicle:
Назначаем в параметрах формы добавленный элемент bindingSource в качестве источника данных DataSourse:
Теперь можно добавлять на форму элементы управления, предназначенные для отображения свойств записи справочника. Каждый из них через свойство DataBindings -> EditValue подключаем к соответствующим свойствам справочника в bindingSorce:
Для элемента управления DictionaryLookupEdit, с помощью которого отображается модель транспортного средства (ModelID), дополнительно выбираем в свойстве DictionaryType тип справочника, записи которого он отображает – Ultima.Metadata.VehicleModel.
По завершении компилируем проект, копируем созданные библиотеки в папку модуля в клиентском приложении Client/ClientModules/TradeTestSolution, перезагружаем метаданные и открываем созданную форму редактирования записи справочника: