IPrxMap.AreaAction

Синтаксис

AreaAction: String;

Описание

Свойство AreaAction определяет макрос для обработки событий карты.

Примечание. Объект среды разработки, в котором содержится реализация макроса, должен быть подключен к регламентному отчету.

Комментарии:

В зависимости от того, где находится реализация макроса, различается способ указания пути к макросу в данном свойстве:

В модулях/формах репозитория реализация пользовательских макросов должна производиться в глобальном пространстве имен (Global Scope).

В .NET-модулях/.NET-формах репозитория реализация пользовательских макросов должна производиться в каком-либо классе. Макрос должен представлять из себя статическую процедуру/функцию.

Пример Fore

Для выполнения примера создайте модуль с идентификатором «Module», содержащий процедуру «ModMapClick». Подключите системные сборки: Ui, Report, Forms.NET (для примера Fore.NET).

Sub ModMapClick(TerrId: Variant; Map: IPrxMap);
Begin
    WinApplication.InformationBox(
"Код территории = " + (TerrId As Integer).ToString);
End Sub ModMapClick;

Создайте регламентный отчет с идентификатором «REGULAR_REPORT», на листе которого расположена карта с исходными данными. Добавьте созданный модуль в модули отчета.

Создайте модуль, который назначает обработчик события карты. Подключите системные сборки: Metabase, Report, Tab.

Sub UserProc;
Var
    Metabase: IMetabase;
    Report: IPrxReport;
    TabSheet: ITabSheet;
    Map: IPrxMap;
Begin
    Metabase := MetabaseClass.Active;
    Report := Metabase.ItemById(
"REGULAR_REPORT").Edit As IPrxReport;
    TabSheet := (Report.ActiveSheet 
As IPrxTable).TabSheet;
    Map := TabSheet.Objects.Item(
0).Extension As IPrxMap;
    Map.AreaAction := 
"Module.ModMapClick";
    (Report 
As IMetabaseObject).Save;
End Sub UserProc;

В регламентном отчете добавится обработчик события для карты, при нажатии на любой из регионов будет выдаваться сообщение с кодом территории.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Модуль для сообщения с кодом территории:

Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Ui;
Imports Prognoz.Platform.Forms.NET;

Public Shared Sub ModMapClick(TerrId: object; Map: IPrxMap);
Var
     WinAppCls: WinApplicationClass = 
New WinApplicationClassClass();
Begin
     WinAppCls.InformationBox(
"Код территории = " + (TerrId As integer).ToString(), Null);
End Sub ModMapClick;

Модуль для назначения обработчика события карты:

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;

Public Shared Sub Main(Params: StartParams);
Var
    Metabase: IMetabase;
    Report: IPrxReport;
    TabSheet: ITabSheet;
    Map: IPrxMap;
Begin
    Metabase := Params.Metabase;
    Report := Metabase.ItemById["REGULAR_REPORT"].Edit() As IPrxReport;
    TabSheet := (Report.ActiveSheet As IPrxTable).TabSheet;
    Map := TabSheet.Objects.Item[0].Extension As IPrxMap;
    Map.AreaAction := "Module.Program.ModMapClick";
    (Report As IMetabaseObject).Save();
End Sub;

См. также:

IPrxMap