Сохранение и загрузка настроек дерева объектов рабочей книги на Fore.NET

Для рабочей книги базы данных временных рядов доступна загрузка и сохранение ее настроек и настроек дерева показателей.

Сохраняются/загружаются следующие настройки:

Настройки сохраняются только для тех баз данных временных рядов, ряды их которых используются в рабочей книге.

Описание примера

Для выполнения примера требуется форма .NET, на которой расположены:

Добавьте ссылки на пространства имен:

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Cubes;

При нажатии кнопки «Сохранить» будет выполняться сохранение настроек рабочей книги, а при нажатии кнопки «Загрузить» - загрузка настроек.

Процедура сохранения настроек

Данная процедура является обработчиком события Click для кнопки «SaveButton».

Private Sub SaveButton_Click(sender: System.Object; e: System.EventArgs);
Var
    Doc: FreeThreadedDOMDocument60;
    Element: IXmlDomElement;
    Ea: IEaxAnalyzer;
    Wb: IEaxWorkbook;
    WbTree: IEaxWorkbookMetaAttributesTree;
    Rub: IRubricator;
    OpList: IEaxWorkbookRubricatorOptionsList;
    Options: IEaxWorkbookRubricatorOptions;
    Statistics: IEaxWorkbookStatistics;
Begin
    // Сохраняем настройки MetaAttributesBreadcrumbNet1 в XML
    Doc := New FreeThreadedDOMDocument60.Create();
    Element := Doc.createElement("Breadcrumb");
    MetaAttributesBreadcrumbNet1.CtrlBox.SaveState(Element);
    Doc.appendChild(Element);
    // Получаем рабочую книгу
    Ea := UiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
    Wb := Ea As IEaxWorkbook;
    // Получаем параметры дерева объектов
    WbTree := Wb.MetaAttributesTree;
    Rub := MetaAttributesBreadcrumbNet1.Rubricator.Rubricator;
    // Получаем параметры каталога, связанного с деревом объектов
    OpList := WbTree.RubricatorsOptions;
    // Очищаем параметры
    OpList.Clear();
    If Options = Null Then
        Options := OpList.Add(Rub As IMetabaseObjectDescriptor);
        System.Diagnostics.Debug.WriteLine("База данных временных рядов: " + Options.RubricatorObject.Name);
    End If;
    // Устанавливаем параметры дерева показателей
    Options.HierarchyAttributes := Doc.xml;
    // Задаем параметры панели "Результаты расчёта"
    Statistics := Wb.Statistics;
    Statistics.Enabled := True;
    Statistics.Visible := False;
    // Сохраняем рабочую книгу
    (Ea As IMetabaseObject).Save();
End Sub;

После выполнения примера сохраняются все настройки, установленные для рабочей книги, загруженной в LanerBox.

Процедура загрузки настроек

Данная процедура является обработчиком события Click для кнопки «LoadButton».

Private Sub LoadButton_Click(sender: System.Object; e: System.EventArgs);
Var
    Rub: IRubricator;
    RubKey: integer;
    Doc: FreeThreadedDOMDocument60;
    Element: IXmlDomElement;
    Ea: IEaxAnalyzer;
    Wb: IEaxWorkbook;
    WbTree: IEaxWorkbookMetaAttributesTree;
    OpList: IEaxWorkbookRubricatorOptionsList;
    Options: IEaxWorkbookRubricatorOptions;
Begin
    // Получаем базу данных временных рядов,
    // связанную с MetaAttributesBreadcrumbNet1
    Rub := MetaAttributesBreadcrumbNet1.Rubricator.Rubricator;
    RubKey := (Rub As IMetabaseObjectDescriptor).Key As integer;
    // Получаем рабочую книгу
    Ea := UiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
    Wb := Ea As IEaxWorkbook;
    // Получаем параметры дерева объектов
    WbTree := Wb.MetaAttributesTree;
    // Получаем параметры каталога, связанного с деревом объектов
    OpList := WbTree.RubricatorsOptions;
    Options := OpList.Item[RubKey];
    // Загружаем из рабочей книги сохраненные параметры MetaAttributesBreadcrumb1
    If Options <> Null Then
        Doc := New FreeThreadedDOMDocument60.Create();
        If (Doc.loadXML(Options.HierarchyAttributes)) Then
            Element := Doc.selectSingleNode("Breadcrumb"As IXmlDomElement;
            If (Element <> NullThen
                MetaAttributesBreadcrumbNet1.CtrlBox.LoadState(Element);
            End If;
        Else
            System.Diagnostics.Debug.WriteLine("Ошибка при загрузке xml");
        End If;
    End If;
    // Загружаем из рабочей книги сохраненные параметры панели "Результаты расчёта"
    lanerResultBoxNet1.ResultContainerVisible := Wb.Statistics.Visible;
End Sub;

После выполнения примера для рабочей книги, загруженной в LanerBox, загружаются все сохраненные настройки.

См. также:

Примеры