MapChart: IVZMapChart;
MapChart: Prognoz.Platform.Interop.Vizualizators.VZMapChart;
Свойство MapChart возвращает объект, содержащий параметры отображения карты в экспресс-отчете.
Карта предназначена для отображения картографических данных, строится на базе двумерной таблицы и обычно представляет собой одну строку/столбец из этой таблицы в виде закраски территорий. Закраска территорий определяется начальным и конечным цветами, которые соответствуют минимальному и максимальному значению на карте соответственно.
Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «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(0, 0, 0);
Pen := New GxPen.CreateSolid(Color, 1);
ArrowStyle.Border := Pen;
// Применим стиль подписи
LabelStyle := New VZLabelStyle.Create;
Brush := New GxSolidBrush.Create(New GxColor.CreateRGB(128, 128, 128));
LabelStyle.Background := Brush;
LabelStyle.BorderPen := Pen;
Font := New GxFont.Create("Tahoma", 12, GxFontStyle.Bold, GxUnit.Point);
LabelStyle.Font := Font;
LabelStyle.FontShadowColor := New GxColor.CreateRGB(0, 5, 0);
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(180, 5, 180);
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.
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(0, 0, 0);
Pen.CreateSolid(Color, 2);
ArrowStyle.Border := Pen;
// Применим стиль подписи
LabelStyle := New VZLabelStyle.Create();
Color_F.CreateRGB(128, 128, 128);
Brush.Create(Color_F);
LabelStyle.Background := Brush;
LabelStyle.BorderPen := Pen;
Font.Create("Tahoma", 12, GxFontStyle.gfsBold, GxUnit.guPoint);
LabelStyle.Font := Font;
Color_Z.CreateRGB(180, 5, 180);
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;
См. также: