IVZBubbleTree.TextVisual

Синтаксис Fore

TextVisual: IVZTextVisual;

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

TextVisual: Prognoz.Platform.Interop.Visualizators.VZTextVisual;

Описание

Свойство TextVisual определяет визуализатор текста.

Пример Fore

Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «EXPRES». В экспресс-отчете должно быть настроено отображение визуализатора «Пузырьковое дерево», для которого должна быть выбрана метрика «Цвет». Модуль, в котором размещается пример, должен иметь ссылки на системные сборки Dimension, Express, Metabase и Visualizators. Указанная процедура должна вызываться из точки входа Main.

Далее будем первую букву входящих строк изменять на заглавную:

// Определим собственный преобразователь
Class MyAdapter: object, IVZDataAdapter
    // Будем первую букву всех строк делать заглавной
    Function GetData(Value: Variant): Variant;
    Var 
        str: String;
        chr: Char;
    Begin
        str := Value As String;
        // Получим первый символ строки
        chr := str.Chars(0);
        // Сделаем данный символ заглавным
        chr := Char.ToUpper(chr);
        // Получим строку с большой буквой
        str := chr + str.SubString(1, str.Length -1);
        Return str;
    End Function GetData;
End Class MyAdapter;

Sub UserProc;
Var
    Metabase: IMetabase; // Метабаза
    EaxAnalyzer: IEaxAnalyzer; // Экспресс-отчёт
    EaxBubbleTree: IEaxBubbleTree; //Пузырьковое дерево
    TextVisual: IVZTextVisual; // Визуализатор текста
    DataSourceMapping: IVZDataSourceMapping; // Настройки сопоставления данных
    DataTransformer: IVZDataAdapter; // Преобразователь данных  
Begin
    // Получим объект метабазы
    Metabase := MetabaseClass.Active;
    // Получим объект экспресс-отчёта
    EaxAnalyzer := Metabase.ItemById("EXPRES").Edit As IEaxAnalyzer;
    EaxBubbleTree := EaxAnalyzer.BubbleTree;
    //Устанавливаем отметку для метрики "Значение"
    EaxBubbleTree.IndicatorSelection(EaxBubbleTreeIndicators.Color).CopyTo(EaxBubbleTree.IndicatorSelection(EaxBubbleTreeIndicators.Value), True);
    // Получим визуализатор текста
    TextVisual := EaxBubbleTree.BubbleTree.TextVisual;
    // Получим настройки сопоставления данных
    DataSourceMapping := TextVisual.TextMapping;
    // Установим тип сопоставления "Преобразователь данных"
    DataSourceMapping.MappingType := VisualizatorDataMappingType.DataMappingTransformer;
    // Создадим и установим собственный преобразователь данных
    DataTransformer := New MyAdapter.Create;
    DataSourceMapping.DataTransformer := DataTransformer;
    Debug.WriteLine("Преобразование строк:");   
    Debug.IndentLevel := 1;
    Debug.WriteLine("Вход: ""прогноз"", выход: " + 
        (DataTransformer.GetData("прогноз"As String ));
    Debug.WriteLine("Вход: ""пузырьковое дерево"", выход: " + 
        (DataTransformer.GetData("пузырьковое дерево"As String ));            
End Sub UserProc;

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

Преобразование строк:

    Вход: "прогноз", выход: Прогноз

    Вход: "пузырьковое дерево", выход: Пузырьковое дерево

Пример Fore.NET

Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «EXP».  В экспресс- отчете должно быть настроено отображение визуализатора «Пузырьковое дерево». Приведённые ниже примеры вставляются в модуль Program .NET-сборки. В данный модуль должны быть импортированы сборки Dimension, Express, Metabase и Visualizators из системной сборки Prognoz.Platform.Interop.

Сначала реализуем интерфейс IVZDataAdapter, определив класс MyAdapter со всеми необходимыми открытыми методами и свойствами:

// Определим собственный преобразователь
Public Class MyAdapter: object, IVZDataAdapter
    s: String;
    // Будем первую букву всех строк делать заглавной
    Public Function GetData(Value: object): object;
    Var 
        str: String;
        chr: Char;
    Begin
        str := Value As String;
        // Получим первый символ строки
        chr := str.Chars[0];
        // Сделаем данный символ заглавным
        chr := Char.ToUpper(chr);
        // Получим строку с большой буквой
        str := chr + str.SubString(1, str.Length -1);
        Return str;
    End Function GetData;

    //Переопределяем открытое свойство Id интерфейса IVZDataAdapter
    Public Property Id: String
        Get
        Begin
            Return s;
        End Get
        Set
        Begin
            s := "";
        End Set 
    End Property Id;

End Class MyAdapter;

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

Теперь преобразуем набор исходных строк помощью данного преобразователя, заменив процедуру Main в модуле Program следующим кодом:

Public Shared Sub Main(Params: StartParams);
Var
    Metabase: IMetabase; // Метабаза
    EaxAnalyzer: IEaxAnalyzer; // Экспресс-отчёт
    EaxBubbleTree: IEaxBubbleTree; //Пузырьковое дерево
    TextVisual: IVZTextVisual; // Визуализатор текста
    DataSourceMapping: IVZDataSourceMapping; // Настройки сопоставления данных
    DataTransformer: IVZDataAdapter; // Преобразователь данных  
Begin
    // Получим объект метабазы
    Metabase := Params.Metabase;
    // Получим объект экспресс-отчёта
    EaxAnalyzer := Metabase.ItemById["EXPRES"].Edit() As IEaxAnalyzer;
    
    EaxBubbleTree := EaxAnalyzer.BubbleTree;
    //Устанавливаем отметку для метрики "Значение"
    EaxBubbleTree.IndicatorSelection[EaxBubbleTreeIndicators.ebtiColor As Integer].CopyTo(EaxBubbleTree.IndicatorSelection[EaxBubbleTreeIndicators.ebtiValue As Integer], True);
    // Получим визуализатор текста
    TextVisual := EaxBubbleTree.BubbleTree.TextVisual;
    // Получим настройки сопоставления данных
    DataSourceMapping := TextVisual.TextMapping;
    // Установим тип сопоставления "Преобразователь данных"
    DataSourceMapping.MappingType := VisualizatorDataMappingType.vdmtDataMappingTransformer;
    // Создадим и установим собственный преобразователь данных
    DataTransformer := New MyAdapter();
    DataSourceMapping.DataTransformer := DataTransformer;
    System.Diagnostics.Debug.WriteLine("Преобразование строк:");
    System.Diagnostics.Debug.IndentLevel := 1;
    System.Diagnostics.Debug.WriteLine("Вход: ""прогноз"", выход: " +
        (DataTransformer.GetData("прогноз"As String ));
    System.Diagnostics.Debug.WriteLine("Вход: ""пузырьковое дерево"", выход: " +
        (DataTransformer.GetData("пузырьковое дерево"As String ));
End Sub;

Результат выполнения примера аналогичен результату, полученному после выполнения примера для языка Fore.

См. также:

IVZBubbleTree