Data(Attribute: Variant; PartIndex: Integer; TimePointIndex: Integer): Variant;
Data[Attribute: System.Object; PartIndex: System.Int32; TimePointIndex: System.Int32]: System.Object;
Attribute. Параметр определяет, какие данные должен возвращать временной адаптер.
PartIndex. Параметр определяет составную часть показателя.
TimePointIndex. Параметр определяет временную точку.
Свойство Data возвращает значение указанной составной части показателя в указанную временную точку.
Составная часть показателя задается с помощью параметра PartIndex, временная точка - с помощью параметра TimePointIndex.
Для выполнения примера предполагается наличие карты с идентификатором «OBJ2908», слоя с наименованием «Regions». Создайте форму, добавьте на нее две кнопки с наименованиями «Button1» и «Button2», компонент MapBox с наименованием «MapBox1», компонент UiMap с наименованием «UiMap1», укажите «UiMap1» в качестве источника компонента «MapBox1», добавьте компонент IntegerEdit с наименованием «IntegerEdit1», в инспекторе сборок добавьте ссылки на системные сборки Drawing, Mаp, MathFin и Metabase.
Var Count: Integer;
int: integer;
Class TerritoryInfoAdapter: Object, IMapDynamicDataAdapter
Function Get_PartCount(Attribute: Variant; TimePoint: Integer): Integer;
Begin
Return Count;
End Function Get_PartCount;
Function Get_TimePointName(TimePoint: Integer): String;
Begin
Return "TimePoint " + TimePoint.ToString;
End Function Get_TimePointName;
Function Get_TimePointsCount: Integer;
Begin
Return 4;
End Function Get_TimePointsCount;
Function Get_Data(Attribute: Variant; PartvIndex: Integer; TimePoint: Integer): Variant;
Var t: Integer;
i: Integer;
Begin
t := 1;
For i := 0 To TimePoint Do
t := t + 10;
End For;
Return Math.Rand * 10 * t;
End Function Get_Data;
Function Get_CustomFormat: String;
Begin
Return "#0,000";
End Function Get_CustomFormat;
End Class TerritoryInfoAdapter;
Class OBJ7171Form: Form
MapBox1: MapBox;
UiMap1: UiMap;
Button1: Button;
Button2: Button;
IntegerEdit1: IntegerEdit;
Map: IMap;
Layer: IMapLayer;
BarVisual: IMapBarVisual;
Sub OBJ4006FormOnCreate(Sender: Object; Args: IEventArgs);
Var mb: IMetabase;
qwe: IMapTimeDynamicDataAdapter;
Begin
mb := MetabaseClass.Active;
UiMap1.Map.Topobase := MetabaseClass.Active.ItemById("OBJ2908").Bind As IMapTopobase; // OBJ2910
Map := UiMap1.Map;
Layer := Map.Layers.FindByName("Regions");
Map.Color := New GxColor.CreateARGB(100, 100, 100, 100);
Map.Refresh;
End Sub OBJ4006FormOnCreate;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var Fill: IMapVisualFillProperty;
Color: IMapVisualColorProperty;
Collection: IMapColorCollection;
ns: IMapNumericScale;
vals: array Of double;
i: Integer;
Scale: IMapColorScale;
StartC, EndC: IGxColor;
Begin
BarVisual := New DxMapBarVisual.Create;
BarVisual := Layer.Visuals.AddBarVisual;
BarVisual.DataAdapter := New TimeDynamicDataAdapter.Create;
Color := BarVisual.Color;
Color.DataAdapter := BarVisual.DataAdapter;
Color.Dependent := True;
Scale := New DxMapColorScale.Create As IMapColorScale;
StartC := GxColor.FromName("Red");
EndC := GxColor.FromName("Blue");
Scale.AutoSetup(Layer, BarVisual.DataAdapter, StartC, EndC);
Color.Scale := Scale;
BarVisual.Height.Dependent := True;
ns := BarVisual.Height.Scale;
ns.AutoCalculable := True;
ns.Count := 3;
vals := New Double[ns.Count];
For i := 0 To vals.Length - 1 Do
vals[i] := i * 20;
End For;
ns.AutoSetup(Layer, BarVisual.DataAdapter, vals, ns.Count, True);
End Sub Button1OnClick;
Sub IntegerEdit1OnChange(Sender: Object; Args: IEventArgs);
Begin
Count := IntegerEdit1.Value;
End Sub IntegerEdit1OnChange;
Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
Var i: Integer;
Visuals: IMapLayerVisuals;
DA: IMapTimeDynamicDataAdapter;
Begin
Visuals := Map.Layers.FindByName("Regions").Visuals;
DA := Visuals.Item(0).DataAdapter As IMapTimeDynamicDataAdapter;
For i := 0 To DA.TimePointsCount - 1 Do
Debug.WriteLine("Name " + DA.TimePointName(i));
Debug.WriteLine("Value " + DA.Data(57, 0, i) As String);
Debug.WriteLine("Part Count " + DA.PartCount(57, i).ToString);
End For;
End Sub Button2OnClick;
End Class OBJ7171Form;
В компоненте «IntegerEdit1» укажите количество составных частей. После выполнения примера при нажатии на кнопку «Button1» на карту будут добавлены показатели, при нажатии на кнопку «Button2» в окно консоли для каждой временной точки будут выведены ее наименование, значение и количество составных частей показателя, указанное в «IntegerEdit1».
Для выполнения примера предполагается наличие карты с идентификатором «OBJ133», слоя с наименованием «Regions». Создайте форму, добавьте на нее две кнопки с наименованиями «Button1» и «Button2», компонент MapBoxNet с наименованием «mapBoxNet1», компонент UiMapNet с наименованием «UiMapNet1», укажите «UiMapNet1» в качестве источника компонента «MapBoxNet1», добавьте компонент numericUpDown с наименованием «numericUpDown1», добавьте ссылки на системные сборки Drawing, Mаp, MathFin и Metabase.
Imports System;
Imports System.Collections.Generic;
Imports System.ComponentModel;
Imports System.Data;
Imports System.Drawing;
Imports System.Text;
Imports System.Windows.Forms;
Imports Prognoz.Platform.Forms.NET;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Map;
Imports Prognoz.Platform.Interop.MathFin;
Class TerritoryInfoAdapter: IMapTimeDynamicDataAdapter
Public Property PartCount[Attribute: Object; TimePoint: Integer]: Integer
Get
Begin
Return Count;
End Get
End Property;
Public Property Data[Attribute: Object; PartvIndex: Integer; TimePoint: Integer]: Object
Get
Var Math: MathClass = New MathClass();
t: Integer;
i: Integer;
Begin
t := 1;
For i := 0 To TimePoint Do
t := t + 10;
End For;
Return Math.Rand() * 10 * t;
End Get
End Property;
Public Property TimePointsCount: Integer
Get
Begin
Return 4;
End Get
End Property;
Public Property TimePointName[TimePoint: Integer]: String
Get
Begin
Return "TimePoint " + TimePoint.ToString();
End Get
End Property;
Public Property CustomFormat: String
Get
Begin
Return "#0,000";
End Get
End Property;
End Class;
Var Count: Integer;
Public Partial Class OBJ947Form: Prognoz.Platform.Forms.NET.ForeNetForm
Public Constructor OBJ947Form();
Begin
InitializeComponent();
End Constructor;
Map: IMap;
GxColorCls: GxColorClass_2 = New GxColorClass_2();
Layer: IMapLayer;
BarVisual: IMapBarVisual;
Private Sub OBJ947Form_Load(sender: System.Object; e: System.EventArgs);
Var mb: IMetabase;
Begin
mb := self.Metabase;
uimapnet1.Map.Topobase := mb.ItemById["OBJ133"].Bind() As DxMapTopobase;
Map := UiMapnet1.Map;
Layer := Map.Layers.FindByName["Regions"];
GxColorCls.CreateARGB(100, 100, 100, 100);
Map.Color := GxColorCls;
Map.Refresh();
End Sub;
Private Sub numericUpDown1_ValueChanged(sender: System.Object; e: System.EventArgs);
Begin
Count := Convert.ToInt32(numericUpDown1.Value);
End Sub;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
Fill: IMapVisualFillProperty;
Color: IMapVisualColorProperty;
Collection: IMapColorCollection;
ns: IMapNumericScale;
vals: array Of double;
i: Integer;
Scale: DxMapColorScale;
StartC, EndC: GxColor;
GxColorCls: GxColorClassClass = New GxColorClassClass();
Begin
BarVisual := New DxMapBarVisual();
BarVisual := Layer.Visuals.AddBarVisual();
BarVisual.DataAdapter := New VisualDataAdapter();
Color := BarVisual.Color;
Color.DataAdapter := BarVisual.DataAdapter;
Color.Dependent := True;
Scale := New DxMapColorScale();
StartC := GxColorCls.FromName("Red");
EndC := GxColorCls.FromName("Blue");
Scale.AutoSetup(Layer, BarVisual.DataAdapter, StartC, EndC);
Color.Scale := Scale;
BarVisual.Height.Dependent := True;
ns := BarVisual.Height.Scale;
ns.AutoCalculable := True;
ns.Count := 3;
vals := New Double[ns.Count];
For i := 0 To vals.Length - 1 Do
vals[i] := i * 20;
End For;
ns.AutoSetup(Layer, BarVisual.DataAdapter, vals, ns.Count, True);
End Sub;
Private Sub button2_Click(sender: System.Object; e: System.EventArgs);
Var i: Integer;
Visuals: IMapLayerVisuals;
DA: IMapTimeDynamicDataAdapter;
Begin
Visuals := Map.Layers.FindByName["Regions"].Visuals;
DA := Visuals.Item[0].DataAdapter As IMapTimeDynamicDataAdapter;
For i := 0 To DA.TimePointsCount - 1 Do
System.Diagnostics.Debug.WriteLine("Name " + DA.TimePointName[i]);
System.Diagnostics.Debug.WriteLine("Value " + (DA.Data[57, 0, i]).ToString());
System.Diagnostics.Debug.WriteLine("Part Count " + DA.PartCount[57, i].ToString());
End For;
End Sub;
End Class;
В компоненте «numericUpDown1» укажите количество составных частей. После выполнения примера при нажатии на кнопку «Button1» на карту будут добавлены показатели, при нажатии на кнопку «Button2» в окно консоли для каждой временной точки будут выведены ее наименование, значение и составных частей показателя, указанное в «numericUpDown1».
См. также: