Add(Value: IVZMapChartArrow): Integer;
Add(Value: Prognoz.Platform.Interop.Visualizators.VZMapChartArrow): integer;
Value. Стрелка на карте.
Метод Add добавляет стрелку в коллекцию.
Для очищения коллекции стрелок используйте IVZMapChartArrows.Clear.
Для удаления стрелки из коллекции по ее индексу используйте IVZMapChartArrows.Remove.
Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «EXPRESS», содержащего карту со стрелками.
Добавьте ссылки на системные сборки: Drawing, Express, Metabase, Visualizators.
Sub UserProc;
Var
Metabase: IMetabase;
EaxAnalyzer: IEaxAnalyzer;
Map: IVZMapChart;
Arrows: IVZMapChartArrows;
Arrow: 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").Edit As IEaxAnalyzer;
// Получим карту экспресс-отчета
Map := EaxAnalyzer.MapChart.MapChart;
// Получим стрелки на карте
Arrows := Map.Arrows;
Arrow := Arrows.Item(0);
Arrows.Clear;
Arrows.Add(Arrow);
// Изменим идентификатор, точки входа и выхода стрелки
Arrow.ArrowId := "ArrowID";
Arrow.StartShapeId := Map.RootLayer.SubLayers.Item(0).Shapes.Item(10).ShapeId;
Arrow.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 := 30;
ArrowStyle.PointerWidth := 30;
// Изменим расположение подписи стрелки по всей длине
ArrowStyle.TextOrientation := MapChartArrowTextOrientation.AlongTheArrow;
// Создадим границу для стрелки
Color := New GxColor.CreateRGB(0, 0, 0);
Pen := New GxPen.CreateSolid(Color, 2);
ArrowStyle.Border := Pen;
// Применим стиль подписи
LabelStyle := New VZLabelStyle.Create;
Brush := New GxSolidBrush.Create(New GxColor.CreateRGB(120, 0, 120));
LabelStyle.Background := Brush;
LabelStyle.BorderPen := Pen;
Font := New GxFont.Create("Arial", 12, GxFontStyle.Bold, GxUnit.Point);
LabelStyle.Font := Font;
LabelStyle.FontShadowColor := New GxColor.CreateRGB(180, 5, 180);
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;
После выполнения примера:
будут удалены все стрелки из коллекции, кроме одной;
для стрелки будут изменен идентификатор, точки входа и выхода;
будет создана подпись со стилем;
будет создана подсказка при щелчке основной кнопкой мыши по стрелке;
в окно консоли будут выведены типы метрик для сопоставления различных настроек.
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;
Arrow: 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"].Edit() As IEaxAnalyzer;
// Получим карту экспресс-отчета
Map := EaxAnalyzer.MapChart.MapChart;
// Получим стрелки на карте
Arrows := Map.Arrows;
Arrow := Arrows.Item[0];
Arrows.Clear();
Arrows.Add(Arrow);
// Изменим идентификатор, точки входа и выхода стрелки
Arrow.ArrowId := "ArrowID";
Arrow.StartShapeId := Map.RootLayer.SubLayers.Item[0].Shapes.Item[10].ShapeId;
Arrow.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 := 30;
ArrowStyle.PointerWidth := 30;
// Изменим расположение подписи стрелки по всей длине
ArrowStyle.TextOrientation := MapChartArrowTextOrientation.mcatoAlongTheArrow;
// Создадим границу для стрелки
Color.CreateRGB(0, 0, 0);
Pen.CreateSolid(Color, 2);
ArrowStyle.Border := Pen;
// Применим стиль подписи
LabelStyle := New VZLabelStyle.Create();
Color_F.CreateRGB(120, 0, 120);
Brush.Create(Color_F);
LabelStyle.Background := Brush;
LabelStyle.BorderPen := Pen;
Font.Create("Arial", 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;
См. также: