Для выполнения примера предполагается наличие формы, содержащей следующие компоненты:
кнопку с идентификатором «Button1»;
LanerBox с идентификатором «LanerBox1»;
UiErAnalayzer с идентификатором «UiErAnalayzer1», являющийся источником данных для «LanerBox1». В «UiErAnalayzer1» должна быть загружена рабочая книга БД временных рядов;
TreeList с идентификатором «TreeList1», содержащий 2 столбца.
Добавьте ссылки на следующие системные сборки:
Collection;
Transform.
Пример является обработчиком события OnClick для компонента «Button1»:
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
EaxStat: IEaxStatistics;
Tree: ITsStatisticsTree;
i: integer;
Nodes: ITreeListNodes;
StatNode, ParentNode: ITreeListNode;
HashT: IHashtable;
Wbk: IEaxWorkbook;
Begin
EaxStat := UiErAnalyzer1.ErAnalyzer.Statistics;
Wbk := UiErAnalyzer1.ErAnalyzer As IEaxWorkbook;
Wbk.Statistics.Visible := True;
Wbk.Statistics.Enabled := True;
// Исключаем часть статистик из построения дерева
EaxStat.StatisticsVisible(TsStatisticsType.Max) := False;
EaxStat.StatisticsVisible(TsStatisticsType.Min) := False;
EaxStat.StatisticsVisible(TsStatisticsType.Average) := False;
// Получаем статистики
Tree := EaxStat.AllStatistics;
// Очищаем компонент для вывода дерева статистик
Nodes := TreeList1.Nodes;
Nodes.Clear;
// Отстраиваем дерево
If Tree = Null Then
Return;
End If;
HashT := New Hashtable.Create;
For i := 0 To Tree.Count - 1 Do
ParentNode := Null;
If Tree.ParentNode(i) <> -1 Then
ParentNode := HashT(Tree.ParentNode(i));
End If;
StatNode := Nodes.AddChild(ParentNode, Tree.Name(i));
If Tree.Type(i) <> TsStatisticsTreeNodeType.Category Then
StatNode.ColumnText(1) := Tree.Value(i);
End If;
StatNode.Data := i;
HashT(i) := StatNode;
End For;
HashT.Clear;
Nodes.TreeControl.InnerRoot.Expand(True);
End Sub Button1OnClick;
После выполнения примера при нажатии на кнопку будет отрисовано дерево статистик для таблицы рабочей книги. В дереве не будут отображаться значения «Минимум», «Максимум» и «Среднее».
Для выполнения примера предполагается наличие формы, содержащей следующие компоненты:
кнопку с идентификатором «button1»;
LanerBoxNet с идентификатором «lanerBoxNet1»;
uiErAnalayzerNet с идентификатором «uiErAnalayzerNet1», являющийся источником данных для «lanerBoxNet1». В «uiErAnalayzerNet1» должна быть загружена рабочая книга БД временных рядов;
TreeListNet с идентификатором «treeListNet1», содержащий 2 колонки.
Пример является обработчиком события Click для компонента «button1».
Imports Prognoz.Platform.Interop.ForeCollections;
Imports Prognoz.Platform.Interop.Transform;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Forms;
…
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
EaxStat: IEaxStatistics;
Tree: ITsStatisticsTree;
i: integer;
Nodes: ITreeListNodes;
StatNode, ParentNode: ITreeListNode;
HashT: IHashtable;
Wbk: IEaxWorkbook;
Begin
EaxStat := UiErAnalyzer1.ErAnalyzer.Statistics;
Wbk := UiErAnalyzer1.ErAnalyzer As IEaxWorkbook;
Wbk.Statistics.Visible := True;
Wbk.Statistics.Enabled := True;
// Исключаем часть статистик из построения дерева
EaxStat.StatisticsVisible[TsStatisticsType.tstMax] := False;
EaxStat.StatisticsVisible[TsStatisticsType.tstMin] := False;
EaxStat.StatisticsVisible[TsStatisticsType.tstAverage] := False;
// Получаем статистики
Tree := EaxStat.AllStatistics;
// Очищаем компонент для вывода дерева статистик
Nodes := treeListNet1.CtrlBox.Nodes;
Nodes.Clear();
// Отстраиваем дерево
If Tree = Null Then
Return;
End If;
HashT := New Hashtable.Create();
For i := 0 To Tree.Count - 1 Do
ParentNode := Null;
If Tree.ParentNode[i] <> -1 Then
ParentNode := HashT[Tree.ParentNode[i]] As ITreeListNode;
End If;
StatNode := Nodes.AddChild(ParentNode, Tree.Name[i]);
If Tree.Type[i] <> TsStatisticsTreeNodeType.tstntCategory Then
StatNode.ColumnText[1] := Tree.Value[i].ToString();
End If;
StatNode.Data := i;
HashT[i] := StatNode;
End For;
HashT.Clear();
Nodes.TreeControl.InnerRoot.Expand(True);
End Sub;
Результат выполнения примера аналогичен результату примера на Fore.
См. также: