Установка динамического свойства ListFormCaption
объекта данных позволяет переопределить заголовок списковой формы, открываемой при редактировании объекта (поднятии на LookUp).
Следует заметить, что установка заголовка окна происходит в методе BaseWinList.Edit
.
public override void OnEdit(string propertyname, ICSSoft.STORMNET.DataObject dataobject, string contpath, object tag)
{
if (propertyname == "Порода")
if (!dataobject.DynamicProperties.ContainsKey("ListFormCaption"))
dataobject.DynamicProperties.Add("ListFormCaption", "Список всех пород");
base.OnEdit(propertyname, dataobject, contpath, tag);
}
Детейл в качестве мастера
Одной из особенностью детейлов является отсутствие формы списка и формы редактирования: и тем и другим служит GroupEdit на форме редактирования объекта-агрегатора. Однако, если возникает необходимость сделать детейл мастером другого объекта, то для начала необходимо создать для неё форму редактирования (и, как следствие, L-представление).
Необходимые действия
- Создать L-представление для мастерового детейла.
- Создать форму списка для мастерового детейла.
- Настроить E-представление мастерового детейла.
- Настроить LookUp.
Создать L-представление
Чтобы создать L-представление, необходимо зайти в свойства класса мастерового лукапа (в нашем случае - СтрокаПогашенияПлана), перейти на вкладку “Представления” и создать новое представление, назвав его СтрокаПогашенияПланаL
Создать форму списка
Чтобы создать форму списка, откроем диаграмму с приложением и формами, созданную при быстром прототипировании. Создадим новый класс, назовем его СтрокаПогашенияПланаL
. Выберем стереотип listform
. Зайдем в свойства класса, на вкладке “Составные представления” выберем представление СтрокаПланаПогашенияL
, созданное на предыдущем шаге.
Настроить E-представление
Чтобы у детейла не было возможности изменения агрегирующего объекта, необходимо удалить из E-представления все ссылки на него, а также добавить ссылки на объект, для которого он будет являться мастером.
Настроить LookUp
Последним шагом является настройка лукапов агрегирующего объекта нашего “не-мастерового детейла” (в нашем случае это объект Клиент
, являющийся агрегатором для КредитнойКарты
). Зайдем в настройки формы редактирования класса КлиентE
, нажмем на кнопку PropertyLookups
и выберем соответствующий контейнер (форму, созданную на шаге 2).
Ошибки
Если что-то сделано неправильно, то при попытке открыть объект на LookUp будет появляться сообщение об ошибке No Such Container
.
Аналогичная ошибка возникнет при попытке создать новый объект на форме списка детейла, так как формы редактирования для него не существует.