IVZMapChartBaseObject.MapChart

Синтаксис Fore

MapChart: IVZMapChart;

Синтаксис Fore.NET

MapChart: Prognoz.Platform.Interop.Vizualizators.VZMapChart;

Описание

Свойство MapChart возвращает объект, содержащий параметры отображения карты в экспресс-отчете.

Комментарии

Карта предназначена для отображения картографических данных, строится на базе двумерной таблицы и обычно представляет собой одну строку/столбец из этой таблицы в виде закраски территорий. Закраска территорий определяется начальным и конечным цветами, которые соответствуют минимальному и максимальному значению на карте соответственно.

Пример Fore

Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «EXPRESS_BO», содержащего карту со стрелками.

Добавьте ссылки на системные сборки: Drawing, Express, Metabase, Visualizators.

Sub UserProc;
Var
    Metabase: IMetabase;
    EaxAnalyzer: IEaxAnalyzer;
    Map: IVZMapChart;
    Arrows: IVZMapChartArrows;
    Arrow1, Arrow2: IVZMapChartArrow;
    ArrowStyle: IVZMapChartArrowStyle;
    Color: IGxColor;
    Pen: IGxPenBase;
    LabelStyle: IVZLabelStyle;
    Brush: IGxBrush;
    Font: IGxFontBase;
    TtStyle: IVZToolTipStyle;
    AV: IVZMapChartArrowVisual;
Begin
    // Получим репозиторий
    Metabase := MetabaseClass.Active;
    // Получим экспресс-отчёт
    EaxAnalyzer := Metabase.ItemById("EXPRESS_BO").Edit As IEaxAnalyzer;
    // Получим карту экспресс-отчета
    Map := EaxAnalyzer.MapChart.MapChart;
    // Получим стрелки на карте
    Arrows := Map.Arrows;
    Arrow1 := Arrows.Item(0);
    // Получим карту от стрелки
    Map := Arrow1.MapChart;
    // Получим стрелки на карте
    Arrows := Map.Arrows;
    Arrow2 := Arrows.Item(1);
    Arrows.Clear;
    Arrows.Add(Arrow2);
    // Изменим идентификатор, точки входа и выхода стрелки
    Arrow2.ArrowId := "ArrowID";
    Arrow2.StartShapeId := Map.RootLayer.SubLayers.Item(0).Shapes.Item(30).ShapeId;
    Arrow2.EndShapeId := Map.RootLayer.SubLayers.Item(0).Shapes.Item(30).ShapeId;
    // Получим стиль стрелки по умолчанию и изменим его
    ArrowStyle := Map.DefaultArrowStyle;
    // Изменим угол изгиба стрелки
    ArrowStyle.Angle := 45;
    // Изменим тип стрелки на фигурную
    ArrowStyle.ArrowType := MapChartArrowType.Figured;
    // Размеры наконечника стрелки не зависят от ее длины
    If ArrowStyle.IsRelativeWidth Then
        ArrowStyle.IsRelativeWidth := False;
    End If;
    // Размеры наконечника
    ArrowStyle.PointerLength := 20;
    ArrowStyle.PointerWidth := 20;
    // Изменим расположение подписи стрелки по всей длине
    ArrowStyle.TextOrientation := MapChartArrowTextOrientation.Horizontal;
    // Создадим границу для стрелки
    Color := New GxColor.CreateRGB(000);
    Pen := New GxPen.CreateSolid(Color, 1);
    ArrowStyle.Border := Pen;
    // Применим стиль подписи
    LabelStyle := New VZLabelStyle.Create;
    Brush := New GxSolidBrush.Create(New GxColor.CreateRGB(128128128));
    LabelStyle.Background := Brush;
    LabelStyle.BorderPen := Pen;
    Font := New GxFont.Create("Tahoma"12, GxFontStyle.Bold, GxUnit.Point);
    LabelStyle.Font := Font;
    LabelStyle.FontShadowColor := New GxColor.CreateRGB(050);
    LabelStyle.MaskText := "Arrow";
    LabelStyle.NoDataText := "NoData";
    ArrowStyle.LabelStyle := LabelStyle;
    // Применим стиль подсказки
    TtStyle := New VZTooltipStyle.Create;
    TtStyle.HoverMode := VisualizatorHoverMode.Click;
    TtStyle.Background := Brush;
    TtStyle.BorderPen := Pen;
    TtStyle.Font := Font;
    TtStyle.FontShadowColor := New GxColor.CreateRGB(1805180);
    TtStyle.MaskText := "Arrow";
    TtStyle.NoDataText := "NoData";
    ArrowStyle.ToolTipStyle := TtStyle;
    // Выведем в окно консоли тип метрик
    AV := ArrowStyle.ArrowVisual;
    Debug.WriteLine("Тип метрики для сопоставления данных цвету стрелки - " + AV.BackgroundMapping.AttributeId);
    Debug.WriteLine("Тип метрики для сопоставления размеру стрелки - " + AV.BasementWidthMapping.AttributeId);
    // Сохраним изменения
    (EaxAnalyzer As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера будут удалены все стрелки из коллекции, кроме одной; для стрелки будут изменен идентификатор, точки входа и выхода; будет создана подпись со стилем; будет создана подсказка при щелчке основной кнопкой мыши по стрелке; в окно консоли будут выведены типы метрик для сопоставления различных настроек, карта для стрелок будет получена от стрелки с карты экспресс-отчета.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Visualizators;

Public Shared Sub Main(Params: StartParams);
Var
    Metabase: IMetabase;
    EaxAnalyzer: IEaxAnalyzer;
    Map: IVZMapChart;
    Arrows: IVZMapChartArrows;
    Arrow1, Arrow2: VZMapChartArrow;
    ArrowStyle: IVZMapChartArrowStyle;
    Color, Color_F, Color_Z: GxColor = New GxColorClass_2();
    Pen: GxPen = New GxPenClass();
    LabelStyle: VZLabelStyle;
    Brush: GxSolidBrush = New GxSolidBrushClass();
    Font: GxFont = New GxFontClass();
    TtStyle: VZToolTipStyle;
    AV: IVZMapChartArrowVisual;
Begin
    // Получим репозиторий
    Metabase := Params.Metabase;
    // Получим экспресс-отчёт
    EaxAnalyzer := Metabase.ItemById["EXPRESS_BO"].Edit() As IEaxAnalyzer;
    // Получим карту экспресс-отчета
    Map := EaxAnalyzer.MapChart.MapChart;
    // Получим стрелки на карте
    Arrows := Map.Arrows;
    Arrow1 := Arrows.Item[0];
    // Получим карту от стрелки
    Map := Arrow1.MapChart;
    // Получим стрелки на карте
    Arrows := Map.Arrows;
    Arrow2 := Arrows.Item[1];
    Arrows.Clear();
    Arrows.Add(Arrow2);
    // Изменим идентификатор, точки входа и выхода стрелки
    Arrow2.ArrowId := "ArrowID";
    Arrow2.StartShapeId := Map.RootLayer.SubLayers.Item[0].Shapes.Item[30].ShapeId;
    Arrow2.EndShapeId := Map.RootLayer.SubLayers.Item[0].Shapes.Item[30].ShapeId;
    // Получим стиль стрелки по умолчанию и изменим его
    ArrowStyle := Map.DefaultArrowStyle;
    // Изменим угол изгиба стрелки
    ArrowStyle.Angle := 45;
    // Изменим тип стрелки на фигурную
    ArrowStyle.ArrowType := MapChartArrowType.mcatFigured;
    // Размеры наконечника стрелки не зависят от ее длины
    If ArrowStyle.IsRelativeWidth Then
        ArrowStyle.IsRelativeWidth := False;
    End If;
    // Размеры наконечника
    ArrowStyle.PointerLength := 20;
    ArrowStyle.PointerWidth := 20;
    // Изменим расположение подписи стрелки по всей длине
    ArrowStyle.TextOrientation := MapChartArrowTextOrientation.mcatoHorizontal;
    // Создадим границу для стрелки
    Color.CreateRGB(000);
    Pen.CreateSolid(Color, 2);
    ArrowStyle.Border := Pen;
    // Применим стиль подписи
    LabelStyle := New VZLabelStyle.Create();
    Color_F.CreateRGB(128128128);
    Brush.Create(Color_F);
    LabelStyle.Background := Brush;
    LabelStyle.BorderPen := Pen;
    Font.Create("Tahoma"12, GxFontStyle.gfsBold, GxUnit.guPoint);
    LabelStyle.Font := Font;
    Color_Z.CreateRGB(1805180);
    LabelStyle.FontShadowColor := Color_Z;
    LabelStyle.MaskText := "Arrow";
    LabelStyle.NoDataText := "NoData";
    ArrowStyle.LabelStyle := LabelStyle;
    // Применим стиль подсказки
    TtStyle := New VZTooltipStyle.Create();
    TtStyle.HoverMode := VisualizatorHoverMode.vhmClick;
    TtStyle.Background := Brush;
    TtStyle.BorderPen := Pen;
    TtStyle.Font := Font;
    TtStyle.FontShadowColor := Color_Z;
    TtStyle.MaskText := "Arrow";
    TtStyle.NoDataText := "NoData";
    ArrowStyle.ToolTipStyle := TtStyle;
    // Выведем в окно консоли тип метрик
    AV := ArrowStyle.ArrowVisual;
    System.Diagnostics.Debug.WriteLine("Тип метрики для сопоставления данных цвету стрелки - " + AV.BackgroundMapping.AttributeId);
    System.Diagnostics.Debug.WriteLine("Тип метрики для сопоставления размеру стрелки - " + AV.BasementWidthMapping.AttributeId);
    // Сохраним изменения
    (EaxAnalyzer As IMetabaseObject).Save();
End Sub;

См. также:

IVZMapChartBaseObject