Fore-формы и Fore.NET-формы/сборки, созданные в репозитории, можно запустить из разрабатываемого кода. Для этого в проекте должны быть добавлены ссылки на следующие сборки:
Сборки, необходимые для запуска всех форм/сборок:
Prognoz.Fore
Prognoz.Platform.Forms.Net
Prognoz.Platform.Interop.ForeSystem
Prognoz.Platform.Interop.Metabase
Prognoz.Platform.Interop.Ui
Prognoz.Platform.WinForms.Utils
Для запуска Fore.NET-сборок:
Prognoz.Platform.Interop.ForeNet
Для запуска Fore.NET-форм отдельно от Fore.NET-сборок также потребуются следующие сборки:
Prognoz.Platform.Interop.Fore
Prognoz.Platform.Interop.Forms
Перед запуском форм в коде необходимо выполнить следующие методы:
Prognoz.Platform.Interop.Ui.IUiWinApplication.CheckAfxState - метод инициализирует системные переменные платформы, которые необходимы для корректной работы объектов.
Prognoz.Platform.Forms.Net.ForeNetFormVS.SetActiveMetabase - метод устанавливает репозиторий, в рамках которого осуществляется запуск объектов.
Данные методы необходимо выполнить единожды перед первым запуском какой-либо формы:
IUiWinApplication WinAppCls = new UiWinApplicationClass();
WinAppCls.CheckAfxState();
ForeNetFormVS.SetActiveMetabase(Mb);
По завершению всей работы также рекомендуется обнулить ссылку на репозиторий для принудительного освобождения ресурсов, используемых для хранения соединения с репозиторием:
ForeNetFormVS.SetActiveMetabase(Null);
Для запуска Fore-формы необходимо для соответствующего объекта репозитория выполнить метод Open либо OpenWithParam:
IMetabaseObjectDescriptor ForeForm = Mb.ItemById["TestForm"];
ForeForm.Open(ForeForm.Params.CreateEmptyValues());
Для запуска Fore.NET-сбороки необходимо для соответствующего объекта репозитория выполнить метод Run:
IMetabaseObjectDescriptor MObj = Mb.ItemById["TestAssm"];
((IForeNETAssembly)MObj.Bind()).Run();
Для запуска Fore.NET-формы необходимо для соответствующего объекта репозитория выполнить метод Show либо ShowDialog:
IForeServices Svc = (IForeServices)Mb;
IForeRuntime ForeRun = Svc.GetRuntime();
IForeNETAssemblyClass RuntimeClass = new ForeNETAssemblyClassClass();
IForeNETRuntime Run = RuntimeClass.Runtime;
IForeNETRuntimeAssembly Asm = Run.Assembly[(Mb.ItemById["TestAssm"].Bind() as IForeNETAssembly), ForeRun.Context];
IForeNETRuntimeForm RuntimeForm = Asm.Form["TestAssm.MAINForm"];
RuntimeForm.Show();
См. также:
Использование ресурсов продукта «Форсайт. Аналитическая платформа» в сторонних приложениях