CellPadding: IGxRectF;
CellPadding: Prognoz.Platform.Interop.Drawing.GxRectF;
Свойство CellPadding определяет область легенды визуализатора, в которой будут находиться пункты.
Для определения горизонтального и вертикального отступов элементов внутри легенды с интервалами используйте IVZIntervalsLegend.CellSpacing.
Для выполнения примера в репозитории необходимо наличие формы, содержащей компоненты:
ReportBox с идентификатором «ReportBox1»;
UiReport с идентификатором «UiReport1», который является источником данных для «ReportBox1».
Дополнительно необходимо наличие:
регламентного отчета, который содержит таблицу. Одно из измерений таблицы имеет тип метрики «Цвет фона». Регламентный отчет является источником данных для «UiReport1»;
графического изображения «Marker.png» в корне диска C.
Добавьте ссылки на системные сборки: Drawing, Express, Tab, Visualizators.
Sub UserProc;
Var
Report: IPrxReport;
TS: ITabSheet;
Grid: IEaxGrid;
Pos, CellPadPos: IGxRectF;
Visualizer: IPrxVisualizerLegend;
i: Integer;
VZLegend: IVZIntervalsLegend;
VZLegendBase: IVZLegendBase;
Color: IGxColor;
Pen: IGxPenBase;
LegItem: IVZLegendItem;
ResourceImage: IVZResourceImage;
Begin
// Получим регламентный отчет
Report := UiReport1.Report;
// Получим активный лист отчета
TS := (Report.ActiveSheet As IPrxTable) As ITabSheet;
// Вставим в отчет легенду таблицы
Pos := New GxRectF.Create(0, 0, 0, 0);
Pos.Left := TS.View.Selection.Range.Location.X;
Pos.Top := TS.View.Selection.Range.Location.Y;
Pos.Width := TS.View.Selection.Range.Width;
Pos.Height := TS.View.Selection.Range.Height;
TS.Objects.Add("PrxVisualizerLegend", Pos);
Visualizer := TS.Objects.Item(TS.Objects.Count - 1).Extension As IPrxVisualizerLegend;
Grid := Report.DataArea.Views.Item(0) As IEaxGrid;
i := Grid.Legends.Add(Grid.IndicatorLegendAssignment(EaxGridIndicatorType.BackgroundColor));
Visualizer.SetEaxObjectLegend(Grid, EaxGridIndicatorType.BackgroundColor);
// Получим легенду таблицы, имеющую интервалы
VZLegend := Visualizer.PlacedControl As IVZIntervalsLegend;
VZLegendBase := VZLegend As IVZLegendBase;
// Создадим линии для верхнего и нижнего колонтитулов
Color := New GxColor.CreateRGB(120, 0, 120);
Pen := New GxPen.CreateSolid(Color, 5);
VZLegendBase.HeaderLine := Pen;
VZLegendBase.Footer := VZLegendBase.Header;
VZLegendBase.FooterLine := Pen;
// Изменим расположение объектов внутри подсказки и цвет заливки
CellPadPos := New GxRectF.Create(20, 100, 100, 0);
VZLegend.CellPadding := CellPadPos;
VZLegend.ColorApplying := LegendColorApplying.Background;
VZLegend.Style.Background := New GxSolidBrush.Create(GxColor.FromName("Yellow"));
// Создадим коллекцию пунктов легенды и добавим в нее первый пункт
VZLegend.Items := New VZLegendItems.Create;
LegItem := New VZLegendItem.Create;
LegItem.Text := "TEXT";
LegItem.Color := GxColor.FromName("Blue");
VZLegend.Items.Add(LegItem);
// Выравнивание пункта по левому краю
VZLegend.HorizontalCellsAligment := LegendItemsHorizontalAlignment.Right;
// Создадим маркер легенды и применим его для пункта легенды
VZLegend.Marker := New VZIntervalsLegendMarker.Create;
ResourceImage := New VZResourceImage.Create;
ResourceImage.Bitmap := New GxBitmap.CreateFromFile("C:\Marker.png");
VZLegend.Marker.Image := ResourceImage;
VZLegend.Marker.Mask := ResourceImage;
VZLegend.Marker.Marker := VisualizatorSizeMarkerShape.Custom;
// Обновим визуализатор
Visualizer.Update;
End Sub UserProc;
После выполнения примера в выбранном пользователем диапазоне ячеек таблицы будет создана легенда карты. Легенда будет иметь желтый фон, один пункт с выравниванием по правому краю, маркер пункта синего цвета. Маркер будет импортирован из файла.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.
Private Sub UserProc();
Var
Report: IPrxReport;
TS: ITabSheet;
Grid: IEaxGrid;
Pos, CellPadPos: GxRectF = New GxRectFClass();
Visualizer: IPrxVisualizerLegend;
i: Integer;
VZLegend: IVZIntervalsLegend;
VZLegendBase: IVZLegendBase;
Color: GxColor = New GxColorClass_2();
ColorBack: GxColorClass = New GxColorClassClass();
Brush: GxSolidBrush = New GxSolidBrushClass();
Pen: GxPen = New GxPenClass();
LegItem: VZLegendItem = New VZLegendItemClass();
LegItems: VZLegendItems = New VZLegendItemsClass();
Marker: VZIntervalsLegendMarker = New VZIntervalsLegendMarkerClass();
ResourceImage: VZResourceImage = New VZResourceImageClass();
Bitmap: GxBitmap = New GxBitmapClass_2();
Begin
// Получим регламентный отчет
Report := UiReportNet1.ReportUi.Report;
// Получим активный лист отчета
TS := (Report.ActiveSheet As IPrxTable) As ITabSheet;
// Вставим в отчет легенду таблицы
Pos.Create(0, 0, 0, 0);
Pos.Left := TS.View.Selection.Range.Location.X;
Pos.Top := TS.View.Selection.Range.Location.Y;
Pos.Width := TS.View.Selection.Range.Width;
Pos.Height := TS.View.Selection.Range.Height;
TS.Objects.Add("PrxVisualizerLegend", Pos);
Visualizer := TS.Objects.Item[TS.Objects.Count - 1].Extension As IPrxVisualizerLegend;
Grid := Report.DataArea.Views.Item[0] As IEaxGrid;
i := Grid.Legends.Add(Grid.IndicatorLegendAssignment[EaxGridIndicatorType.egitBackgroundColor As Integer]);
Visualizer.SetEaxObjectLegend(Grid, EaxGridIndicatorType.egitBackgroundColor As Integer);
// Получим легенду таблицы, имеющую интервалы
VZLegend := Visualizer.PlacedControl As IVZIntervalsLegend;
VZLegendBase := VZLegend As IVZLegendBase;
// Создадим линии для верхнего и нижнего колонтитулов
Color.CreateRGB(120, 0, 120);
Pen.CreateSolid(Color, 5);
VZLegendBase.HeaderLine := Pen;
VZLegendBase.Footer := VZLegendBase.Header;
VZLegendBase.FooterLine := Pen;
// Изменим расположение объектов внутри подсказки и цвет заливки
CellPadPos.Create(20, 100, 100, 0);
VZLegend.CellPadding := CellPadPos;
VZLegend.ColorApplying := LegendColorApplying.lcaBackground;
Brush.Create(ColorBack.FromName("Yellow"));
VZLegend.Style.Background := Brush;
// Создадим коллекцию пунктов легенды и добавим в нее первый пункт
VZLegend.Items := LegItems;
LegItem.Text := "TEXT";
LegItem.Color := ColorBack.FromName("Blue");
VZLegend.Items.Add(LegItem);
// Выравнивание пункта по левому краю
VZLegend.HorizontalCellsAligment := LegendItemsHorizontalAlignment.lihaRight;
// Создадим маркер легенды и применим его для пункта легенды
VZLegend.Marker := Marker;
Bitmap.CreateFromFile("C:\Marker.png");
ResourceImage.Bitmap := Bitmap;
VZLegend.Marker.Image := ResourceImage;
VZLegend.Marker.Mask := ResourceImage;
VZLegend.Marker.Marker := VisualizatorSizeMarkerShape.vsmsCustom;
// Обновим визуализатор
Visualizer.Update();
End Sub UserProc;
См. также: