HierarchyInstance: IDimHierarchyInstance;
HierarchyInstance: Prognoz.Platform.Interop.Dimensions.IDimHierarchyInstance;
Свойство HierarchyInstance определяет альтернативную иерархию справочника.
Для выполнения примера разместите на форме:
компонент Button с идентификатором Button1;
компонент DimensionTree с идентификаторами DimensionTree1;
компонент DimensionTree с идентификаторами DimensionTree2;
компонент UiDimension с идентификаторами UiDimensionTree1;
компонент UiDimension с идентификаторами UiDimensionTree2;
компонент Memo с идентификатором memo1 (для Fore.NET: компонент TextBox с идентификатором textBox1).
Для Fore.NET вместо компонентов Fore используйте их аналоги.
Укажите:
справочник с идентификатором DIC в качестве источника данных для компонентов с идентификатором UiDimension1 и UiDimension2;
компонент с идентификатором UiDimension1 в качестве источника данных для компонента с идентификатором DimensionTree1;
компонент с идентификатором UiDimension2 в качестве источника данных для компонента с идентификатором DimensionTree2.
Добавьте ссылки на системные сборки: Dimensions, ExtCtrls, Forms, Metabase.
После запуска примера:
создайте отметку, по которой будет динамически создана альтернативная иерархия. Для этого укажите элементы в компоненте с идентификатором DimensionTree1;
укажите элементы в компоненте с идентификатором DimensionTree2 для создания дополнительных элементов иерархии, которые не были включены в отметку.
Пример является обработчиком события OnClick для компонента «Button1».
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Creator: IDimHierarchyCreator;
Begin
// Cоздадим динамически альтернативную иерархию
Creator := New DimHierarchyCreator.Create;
// Получим отметку
с элементами, по которой формируется альтернативная иерархия
Creator.Selection := DimensionTree1.Selection;
// Получим отметку с дополнительными элементами
Creator.AdditionalElements:=DimensionTree2.Selection;
// Зададим коневой элемент
Creator.RootElement:= True;
Creator.RootElementName:="Корневой элемент";
//Получим альтернативную иерархию
DimensionTree2.Selection.Hierarchy := Creator.HierarchyInstance;
//Выведем наименование группировочных элементов
memo1.Lines.Add("Группировочные элементы:"+Creator.HierarchyInstance.GroupingElements.ToString("NAME",";"));
End Sub Button1OnClick;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.ExtCtrls;
Imports Prognoz.Platform.Interop.Forms;
Imports Prognoz.Platform.Interop.Metabase;
…
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
Creator: IDimHierarchyCreator;
Begin
// Cоздаем динамически альтернативную иерархию
Creator := New DimHierarchyCreator.Create();
// Получим отметку
с элементами, по которой формируется альтернативная иерархия
Creator.Selection := dimensionTreeNet1.Selection;
// Получим отметку с дополнительными элементами
Creator.AdditionalElements:=dimensionTreeNet2.Selection;
// Зададим коневой элемент
Creator.RootElement:= True;
Creator.RootElementName:="Корневой элемент";
//Получим альтернативную иерархию
dimensionTreeNet2.Selection.Hierarchy := Creator.HierarchyInstance;
//Выведем наименование группировочных элементов
ElemList := New List < string > ();
ElemList.Add("Группировочные элементы:"+Creator.HierarchyInstance.GroupingElements.ToString("NAME",";", False));
textBox1.Lines := ElemList.ToArray();
End Sub;
В результате выполнения примера в компоненте с идентификатором DimensionTree2 отобразится созданная динамически альтернативная иерархия с корневым элементом «Корневой элемент», а в компоненте с идентификатором memo 1 (для Fore.NET: с идентификатором textBox1). наименование группировочного элемента.
См. также: