IEaxDataAreaHierarchy.ElementStyle

Синтаксис Fore

ElementStyle(Element: Variant): IEaxDataAreaCellStyle;

Синтаксис Fore.NET

ElementStyle[Element: object]: Prognoz.Platform.Interop.Express.IEaxDataAreaCellStyle;

Параметры

Element. Идентификатор вычисляемого элемента.

Описание

Свойство ElementStyle определяет стиль оформления ячеек элемента альтернативной иерархии.

Комментарии

Для получения идентификатора вычисляемого элемента используйте IDimInstance.Id.

Пример Fore

Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «EXPRESS». Отчет содержит таблицу. Одно из измерений должно содержать минимум одну альтернативную иерархию. Также в первый элемент отметки должен быть добавлен вычисляемый элемент с произвольным наименованием.

Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Tab.

Sub UserProc;
Var
    MB: IMetabase;
    Express: IEaxAnalyzer;
    Hier: IEaxDataAreaHierarchy;
    CustDimAttrsCount: Integer;
    Slice: IEaxDataAreaSlice;
    DimSel, Sel_filt: IDimSelection;
    DimEl: String;
    CellStyle: IEaxDataAreaCellStyle;
    SelSet: IDimSelectionSet;
    Sel: IDimSelection;
    tr, sort: IEaxDataAreaTransformation;
Begin
    // Получим репозиторий
    MB := MetabaseClass.Active;
    // Получим экспресс-отчет
    Express := MB.ItemById("EXPRESS").Edit As IEaxAnalyzer;
    // Получим альтернативную иерархию
    Hier := Express.DataArea.Hierarchies.Item(0);
    // Получим и выведем в окно консоли количество атрибутов измерения фактов
    CustDimAttrsCount := Hier.CustomDimension.Attributes.Count;
    Debug.WriteLine("Количество атрибутов измерения фактов = " + CustDimAttrsCount.ToString);
    // Выведем в окно консоли количество альтернативных иерархий
    Debug.WriteLine("Количество альтернативных иерархий = " + Hier.Hierarchies.Count.ToString);
    // Выведем в окно консоли идентификатор альтернативной иерархии
    Debug.WriteLine("Идентификатор альтернативной иерархии - " + Hier.Hierarchy.Key.ToString);
    // Выведем в окно консоли первый и последний элементы измерения
    Debug.WriteLine("Первый элемент измерения - " + Hier.Selection.FirstDimElement.ToString);
    Debug.WriteLine("Последний элемент измерения - " + Hier.Selection.LastDimElement.ToString);
    // Изменим тип значка при наведении указателя мыши на вычисляемый элемент
    Slice := Express.DataArea.Slices.Item(0);
    DimSel := Slice.Selection.Item(0);
    DimSel.SelectAll;
    DimEl := DimSel.Dimension.Elements.Id(1);
    CellStyle := Hier.ElementStyle(DimEl);
    CellStyle.Data.PictureCursor := TabCursor.CrossSmall;
    // Отфильтруем записи с помощью выражения
    SelSet := Express.DataArea.Slices.Item(0).Selection.CreateCopy;
    Sel_filt := SelSet.Item(0);
    Sel_filt.SelectAll;
    tr := Hier.FilterTransformations.Add(SelSet, Sel, -1);
    tr.Enabled := True;
    tr.Expression.AsString := "{Архангельская область[t]} > 25";
    Hier.Filter;
    If Hier.IsFiltered Then
        Debug.WriteLine("Фильтрация успешно завершена"Else
        Debug.WriteLine("Фильтрация завершилась с ошибками");
    End If;
    // Отсортируем записи с помощью выражения по возрастанию
    If hier.IsAutoSort Then
        Hier.AutoSort := Tristate.OffOption;
    End If;
    sort := Hier.SortTransformations.Add(SelSet, Sel, -1);
    sort.Enabled := True;
    sort.Expression.AsString := "{X[1997]}";
    Hier.SortDirection := EaxDataAreaHierarchySortDirection.Asc;
    Hier.Sort;
    If Hier.IsSorted Then
        Debug.WriteLine("Сортировка успешно завершена"Else
        Debug.WriteLine("Сортировка завершилась с ошибками");
    End If;
    //Обновим и сохраним изменения
    Express.RefreshAll;
    (Express As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера:

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Tab;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Express: IEaxAnalyzer;
    Hier: IEaxDataAreaHierarchy;
    CustDimAttrsCount: Integer;
    Slice: IEaxDataAreaSlice;
    DimSel, Sel_filt: IDimSelection;
    DimEl: String;
    CellStyle: IEaxDataAreaCellStyle;
    SelSet: IDimSelectionSet;
    Sel: IDimSelection;
    tr, sort: IEaxDataAreaTransformation;
Begin
    // Получим репозиторий
    MB := Params.Metabase;
    // Получим экспресс-отчет
    Express := MB.ItemById["EXPRESS"].Edit() As IEaxAnalyzer;
    // Получим альтернативную иерархию
    Hier := Express.DataArea.Hierarchies.Item[0];
    // Получим и выведем в окно консоли количество атрибутов измерения фактов
    CustDimAttrsCount := Hier.CustomDimension.Attributes.Count;
    System.Diagnostics.Debug.WriteLine
    ("Количество атрибутов измерения фактов = " + CustDimAttrsCount.ToString());
    // Выведем в окно консоли количество альтернативных иерархий
    System.Diagnostics.Debug.WriteLine
    ("Количество альтернативных иерархий = " + Hier.Hierarchies.Count.ToString());
    // Выведем в окно консоли идентификатор альтернативной иерархии
    System.Diagnostics.Debug.WriteLine
    ("Идентификатор альтернативной иерархии - " + Hier.Hierarchy.Key.ToString());
    // Выведем в окно консоли первый и последний элементы измерения
    System.Diagnostics.Debug.WriteLine
    ("Первый элемент измерения - " + Hier.Selection.FirstDimElement.ToString());
    System.Diagnostics.Debug.WriteLine
    ("Последний элемент измерения - " + Hier.Selection.LastDimElement.ToString());
    // Изменим тип значка при наведении указателя мыши на вычисляемый элемент
    Slice := Express.DataArea.Slices.Item[0];
    DimSel := Slice.Selection.Item[0];
    DimSel.SelectAll();
    DimEl := DimSel.Dimension.Elements.Id[1];
    CellStyle := Hier.ElementStyle[DimEl];
    CellStyle.Data.PictureCursor := TabCursor.tfcurCrossSmall;
    // Отфильтруем записи с помощью выражения
    SelSet := Express.DataArea.Slices.Item[0].Selection.CreateCopy();
    Sel_filt := SelSet.Item[0];
    Sel_filt.SelectAll();
    tr := Hier.FilterTransformations.Add(SelSet, Sel, uinteger.maxvalue);
    tr.Enabled := True;
    tr.Expression.AsString := "{Архангельская область[t]} > 25";
    Hier.Filter();
    If Hier.IsFiltered Then
        System.Diagnostics.Debug.WriteLine("Фильтрация успешно завершена"Else
        System.Diagnostics.Debug.WriteLine("Фильтрация завершилась с ошибками");
    End If;
    // Отсортируем записи с помощью выражения по возрастанию
    If hier.IsAutoSort Then
        Hier.AutoSort := Tristate.tsOffOption;
    End If;
    sort := Hier.SortTransformations.Add(SelSet, Sel, uinteger.maxvalue);
    sort.Enabled := True;
    sort.Expression.AsString := "{X[1997]}";
    Hier.SortDirection := EaxDataAreaHierarchySortDirection.edahsdAsc;
    Hier.Sort();
    If Hier.IsSorted Then
        System.Diagnostics.Debug.WriteLine("Сортировка успешно завершена"Else
        System.Diagnostics.Debug.WriteLine("Сортировка завершилась с ошибками");
    End If;
    //Обновим и сохраним изменения
    Express.RefreshAll();
    (Express As IMetabaseObject).Save();
End Sub;

См. также:

IEaxDataAreaHierarchy