Map: IPrxMap;
Свойство Map определяет карту регламентного отчета, для которой строится легенда.
Для выполнения примера предполагается наличие регламентного отчета, на листе которого расположена карта со слоем «Regions» и «Картографическим» показателем. На форме должны быть расположены: кнопка с наименованием «Button1», невизуальный компонент UiReport с наименованием «UiReport1», компонент ReportBox с наименованием «ReportBox1». В свойствах компонента UiReport выберите регламентный отчет в качестве объекта, установите значение True в свойстве «Active». Для компонента ReportBox выберите источник данных «UiReport1». Подключите системные сборки: Drawing, Forms, Map, Report, Tab, Forms.Net (для примера Fore.NET).
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Obj: ITabObject;
Map: IPrxMap;
Sheet: IPrxSheet;
Info: IMapTerritoryInfo;
Legend: IMapLegend;
RectFL, RectFT: IGxRectF;
LayerL, LayerT: IMapLayer;
Visual: IMapVisual;
Begin
//Определим лист регламентного отчета, на котором содержится карта с идентификатором "PrxMap1"
Sheet := UiReport1.Report.Sheets.Item(0);
Map := Sheet.Table.Objects.Object("PrxMap1").Extension As IPrxMap;
// Создадим прямоугольники и зададим для них параметры
RectFL := New GxRectF.Create(0, 0, 50, 50);
RectFT := New GxRectF.Create(0, 60, 50, 110);
// Добавим легенду по идентификатору как объект
Obj := Sheet.Table.Objects.Add("PrxMapLegend", RectFL);
// Определим карту регламентного отчета, для которой строится легенда
(Obj.Extension As IPrxMapLegend).Map := Map;
// Зададим показатель для легенды и отобразим её в заданном прямоугольнике
LayerL := (Map As IMap).Layers.Item(0);
Visual := LayerL.Visuals.Item(0);
(Obj.Extension As IMapLegend).Visual := Visual;
// Добавим расшифровку по территориям как объект
Obj := Sheet.Table.Objects.Add("PrxMapTerritoryInfo", RectFT);
// Определим карту регламентного отчета, для которой строится расшифровка
(Obj.Extension As IPrxMapTerritoryInfo).Map := Map;
// Зададим слой карты для расшифроки и отобразим её в заданном прямоугольнике
LayerT := (Map As IMap).Layers.Item(0);
(Obj.Extension As IMapTerritoryInfo).Layer := LayerT;
End Sub Button1OnClick;
После выполнения примера и нажатия на кнопку в компоненте ReportBox отобразится карта регламентного отчета с легендой и расшифровкой по территориям в заданных прямоугольниках.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Forms.Net;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Forms;
Imports Prognoz.Platform.Interop.Map;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
Obj: ITabObject;
Map: PrxMap;
Sheet: IPrxSheet;
Info: IMapTerritoryInfo;
Legend: IMapLegend;
RectFL, RectFT: GxRectF = New GxRectFClass();
LayerL, LayerT: IMapLayer;
Visual: IMapVisual;
Begin
//Определим лист регламентного отчета, на котором содержится карта с идентификатором "PrxMap1"
Sheet := uiReportNet1.ReportUi.Report.Sheets.Item[0];
Map := Sheet.Table.Objects.Object["PrxMap1"].Extension As PrxMap;
// Создадим прямоугольники и зададим для них параметры
RectFL.Create(0, 0, 50, 50);
RectFT.Create(0, 60, 50, 110);
// Добавим легенду по идентификатору как объект
Obj := Sheet.Table.Objects.Add("PrxMapLegend", RectFL);
// Определим карту регламентного отчета, для которой строится легенда
(Obj.Extension As PrxMapLegend).Map := Map;
// Зададим показатель для легенды и отобразим её в заданном прямоугольнике
LayerL := (Map As IMap).Layers.Item[0];
Visual := LayerL.Visuals.Item[0];
(Obj.Extension As IMapLegend).Visual := Visual;
// Добавим расшифровку по территориям как объект
Obj := Sheet.Table.Objects.Add("PrxMapTerritoryInfo", RectFT);
// Определим карту регламентного отчета, для которой строится расшифровка
(Obj.Extension As IPrxMapTerritoryInfo).Map := Map;
// Зададим слой карты для расшифроки и отобразим её в заданном прямоугольнике
LayerT := (Map As IMap).Layers.Item[0];
(Obj.Extension As IMapTerritoryInfo).Layer := LayerT;
End Sub;
См. также: