Динамическое создание компонентов

Вот некоторые примеры динамического создания компонентов в Terrasoft Administrator. Может кому пригодится...
Для того, чтобы создать сервис динамически, Вам необходимо создать скрипт, где прописать следующую функцию:

function CreateServiceInDynamic(ServiceCode, TemplateName, USI) {
    var Win = Services.CreateItem(ServiceCode);
    Win.TemplateWindowUSI = TemplateName;
    Win.USI = USI;
    var Code = ExtractUSICodeEx(USI);
    Services.SaveItem(Win,1);        
    var Win2 = Services.GetNewItemByUSI(Code);
    Win2.IsDesigning = false;
    Win2.Show();    
}

function Main() {
    var ServiceCode = 'Window';
    var TemplateName = 'wnd_BaseDBEdit';
    var USI =
'Common\\Workspaces\\Custom\\Structure\\Details\\TestDir\\wnd_Test';
    CreateServiceInDynamic(ServiceCode, TemplateName, USI); }

Для создания сервиса окна Вам необходимо использовать функцию Services.CreateItem и для сохранения данного сервиса Services.SaveItem.
Необходимо указать сервис родительского окна и USI.

Вы можете создать свой контрол, например Lookup, указав для него уникальное имя в рамках данной карточки (окна):

var Component = Window.CreateComponent('LookupControl', 'edtTestLookupControl');

Вы можете создать FrameGroup-и, а далее в них создавать и размещать контролы:

scr_SurveyUtils: function CreateFrame.
     var Component = Window.CreateComponent(ComponentType,
          FrameName + '_1');
     Frame.Add(Component);
     Component.AlignHorizontal = alhClient;

Нравится

Поделиться

2 комментария

Спасибо за пример!

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Тогда уже не CreateServiceInDynamic, а CreateWindowInDynamicи параметр ServiceCode убрать. Потому что если туда передать не 'WIndow',  то получим свал.
Вообще если хочется разобраться с созданием окон на лету, можно посмотреть создание окна Интервью.

Показать все комментарии