TextVisual: IVZTextVisual;
TextVisual: Prognoz.Platform.Interop.Visualizators.VZTextVisual;
Свойство TextVisual определяет визуализатор текста.
Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «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;
В результате выполнения примера был создан собственный преобразователь, изменяющий первую букву входящих строк на заглавную:
Преобразование строк:
Вход: "прогноз", выход: Прогноз
Вход: "пузырьковое дерево", выход: Пузырьковое дерево
Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «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.
См. также: