На лету в зависимости от места вызова подменяю свойство Frame, созданной в AOT формы. Если она вызывается как отдельная форма, то Standard, если как Lookup-форма, то как Border.
Подменяю в методе run формы до super():
PHP код:
public void run()
{
switch (element.args().dataset())
{
case TableNum(InventTable) :
{
element.design().frame(FormFrame::Border);
element.design().windowType(FormWindowType::PopUp);
break;
}
default:
{
element.design().frame(FormFrame::Standard);
element.design().windowType(FormWindowType::Standard);
break;
}
}
super();
}
Проверка из самой вызываемой формы показала, что значение Frame изменяется, что однако не скажешь о реальном отображении формы: в случае Border форма остается Standard (по-умолчанию как настроено в AOT) при этом опросив FormFrame из формы в противоречие этому получаем Border.
Необходимость изменения Frame пришла в следствие ситуации, когда форма, вызываемая как Lookup-форма и настроенная с Frame = Standard в случае если Lookup-форма открывается так близко к краю окна, что не может поместиться полностью, остается активной только пока пользователь не отпустил левую клавишу мышки, а в случае если же такая Lookup-форма открывается на достаточном расстоянии от края, то она остается активной и далее.
Далее, посмотрим с другой стороны - изменим Frame в самом AOT на Border... В случае с Lookup-формой, все отрабатывает замечательно - видно, что форма привязывается к кнопке со стрелкой, однако в случае вызова формы самой по себе Frame на лету также изменить не удается - шапки формы не видно...
И еще один момент: в отличие от ситуации с Frame, windowType в приведенном выше коде отлично отрабатывает.
Прошу помощи - как реально сменить Frame у формы на лету, что в этом свойстве такого особенного?