Функции для работы с системой лицензирования |
В случае наличия в приложении главного меню (Desk), его пункты делятся на контуры и модули в соответсвии с описанием меню. Смена текущего контура или модуля, а также вызов пункта меню какого-либо модуля (через любимые функции или через рабочее место) приводит к открытию и закрытию контуров и модулей. Этот процесс сопровождается захватом и освобождением соответствующих лицензий. В любой момент времени может быть открыто произвольное число контуров и модулей, текущим при этом является тот, чье меню активно.
Особенность работы заключается в том, что в любой момент времени открыт хотя бы один контур (за исключением загрузки через интегратор без dsk-файла, когда активен интегратор, а меню в приложении еще нет). Поэтому при переключении сначала открывается новый контур или модуль. И лишь потом, при удачном открытии, закрывается, если возможно (нет открытых окон), старый.
Для перехвата переключения модуля или контура необходимо подписаться на специальные точки расширения. Подписок может быть несколько, вызываться они будут в соответствии с общими правилами точек расширения. Точки расширения описаны в файле source\sysobjifc\epsystem.vih. См. также раздел "Точки расширения. ":
extensionpoint epBeforeEnterModule(aContour: string; aModule: string); extensionpoint epBeforeExitModule(aContour: string; aModule: string); extensionpoint epAfterEnterModule(aContour: string; aModule: string); extensionpoint epAfterExitModule(aContour: string; aModule: string);
Где:
aContour - название контура, куда пытаемся войти, приведенное к верхнему регистру;
aModule - название модуля, куда пытаемся войти, приведенное к верхнему регистру.
Можно предотвратить переход в контур /модуль. Кроме того можно предотвратить выход из контура /модуля, т.е. освобождение соответствующей лицензии. И для того, и для другого обработчик точки расширения должен вернуть false. Анализируются только точки расширения before. Точки расширения after сделаны для уведомления.
Следующие функции позволяют получить информацию из лицензионного файла:
Информация о контурах: Lic_ContourExists, Lic_FirstContour, Lic_NextContour;
Информация о модулях: Lic_ItemExists, Lic_FirstItem, Lic_NextItem, Lic_ContourNameByItemName;
Информация о платформенной конфигурации: Lic_FirstPlatform, Lic_NextPlatform;
Информация об атрибутах системы: Lic_GetAttribute, Lic_FirstAttribute, Lic_NextAttribute.
Следующие функции позволяют получить информацию о текущих контурах, количестве работающих в них пользователях и другую полезную информацию: ItsCommonContourName, Lic_ModuleMayBeUsed.