IEaxDataAreaSlice.TopobaseByTimePoint

Fore Syntax

TopobaseByTimePoint(Value: Integer): ITopobase;

Fore.NET Syntax

TopobaseByTimePoint[Value: integer]: Prognoz.Platform.Interop.Topobase.Topobase;

Parameters

Value. Time line point index.

Description

The TopobaseKeyByTimePoint property returns key of the topobase, which is displayed in the specified time line point.

Comments

Displaying of different topobases in different time line points is available if version territorial dimension is used. In this dimension various values by the TOPO_ID attribute are specified for the elements that are actual at a certain period of time. Repository topobase keys are specified as values of this attribute. When the map is working, the topobase, which is determined in the TOPO_ID attribute for element (if the element is selected), or for parent element (if several elements are selected) is displayed, and which is relevant in the current time point.

To reset topobase for specified in the repository by default  , use the IEaxDataAreaSlice.ResetTopobase method.

Fore Example

Executing the example requires that repository contains an express report with the EXPRESS_TOPOBASE identifier. The report contains territory dimension built on the base of version dictionary in its structure. Different topobases are determined for different periods.

Add links to the Express, Map, Metabase, Topobase system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    Analyzer: IEaxAnalyzer;
    DataArea: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Map: IMap;
    Topobase: ITopobase;
    TopoKey: Integer;
Begin
    // Get repository
    MB := MetabaseClass.Active;
    // Get express report
    Analyzer := MB.ItemById("EXPRESS_TOPOBASE").Edit As IEaxAnalyzer;
    // Get data area
    DataArea := Analyzer.DataArea;
    // Get data slice
    Slice := DataArea.Slices.Item(0);
    // Get map
    Map := Analyzer.Map.Map;
    // Get topobase from specified point of time scale
    Topobase := Slice.TopobaseByTimePoint(Map.TimePoint) As ITopobase;
    // Set topobase
    Slice.Topobase := Topobase;
    // Get and display key from specified point of time scale
    TopoKey := Slice.TopobaseKeyByTimePoint(Map.TimePoint);
    Debug.WriteLine("Topobase key - " + TopoKey.ToString);
    // Object visibility in report
    Analyzer.MapChart.Visible := True;
    // Save changes
    (Analyzer As IMetabaseObject).Save;
End Sub UserProc;

After executing the example the topobase used by express report map in current time point will be loaded in express report.

Fore.NET Example

The requirements and result of the Fore.NET Example execution match with those in the Fore Example.

Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Map;
Imports Prognoz.Platform.Interop.Topobase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Analyzer: IEaxAnalyzer;
    DataArea: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Map: IMap;
    Topobase: Topobase;
    TopoKey: uinteger;
Begin
    // Get repository
    MB := Params.Metabase;
    // Get express report
    Analyzer := MB.ItemById["EXPRESS_TOPOBASE"].Edit() As IEaxAnalyzer;
    // Get data area
    DataArea := Analyzer.DataArea;
    // Get data slice
    Slice := DataArea.Slices.Item[0];
    // Get map
    Map := Analyzer.Map.Map;
    // Get topobase from specified point of time scale
    Topobase := Slice.TopobaseByTimePoint[Map.TimePoint] As Topobase;
    // Set topobase
    Slice.Topobase := Topobase;
    // Get and display key from specified point of time scale
    TopoKey := Slice.TopobaseKeyByTimePoint[Map.TimePoint];
    System.Diagnostics.Debug.WriteLine("Topobase key - " + TopoKey.ToString());
    // Object visibility in report
    Analyzer.MapChart.Visible := True;
    // Save changes
    (Analyzer As IMetabaseObject).Save();
End Sub;

See also:

IEaxDataAreaSlice