IPrxDataIsland.BeginDrill

Синтаксис Fore

BeginDrill: IPrxDrillCellResult;

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

BeginDrill: Prognoz.Platform.Interop.Report.IPrxDrillCellResult;

Описание

Метод BeginDrill позволяет получить значение ячейки области данных из матрицы среза с возможностью подмены координаты. Также может быть получена информация о привязке ячейки к источнику, для которого настроена множественная отметка в фиксированных измерениях.

Пример

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

Public Sub OnAfterExecuteDataIsland(DataIsland: IPrxDataIsland);
Var
    pt: IPrxTable;
    t: ITabSheet;
    dcr: IPrxDrillCellResult;
    dr: ITabRange;
    i, j: integer;
    m: IMatrix;
    v: variant;
Begin
    m:= DataIsland.Slice.Matrix As IMatrix;
    pt:= DataIsland.Sheet As IPrxTable;
    t:= pt.TabSheet;
    dr:= DataIsland.DataRange;
    dcr:= DataIsland.BeginDrill;
    t.BeginUpdate;
    For i:= dr.Top To dr.Bottom Do
        For j:= dr.Left To dr.Right Do
            If Not dcr.Drill(i, j) Then
            Continue;
            End If;
            //подменяем координату: 2 - это индекс измерения в источнике; 1 - это индекс элемента в измерении. 
            dcr.coord.Item(2) := 1;
            v:= m.Item(dcr.coord);
            t.Cell(i, j).Style.Hint := v As string;
        End For;
    End For;
    t.EndUpdate;
End Sub OnAfterExecuteDataIsland;    

После вычисления области данных для ячеек, отображающих данные, будет выводиться всплывающая подсказка со значением для второго элемента (индекс=1) заданного измерения (индекс=2). Подсказка не будет отображена, если второй элемент (индекс=1) не был отмечен в измерении.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Public Override Sub OnAfterExecuteDataIsland(DataIsland : IPrxDataIsland);
Var
    pt: IPrxTable;
    t: ITabSheet;
    dcr: IPrxDrillCellResult;
    dr: ITabRange;
    i, j: integer;
    m: IMatrix;
    v: object; 
Begin
    m:= DataIsland.Slice.Matrix As IMatrix;
    pt:= DataIsland.Sheet As IPrxTable;
    t:= pt.TabSheet;
    dr:= DataIsland.DataRange;
    dcr:= DataIsland.BeginDrill();
    t.BeginUpdate();
    For i:= dr.Top To dr.Bottom Do
        For j:= dr.Left To dr.Right Do
            If Not dcr.Drill(i, j) Then
            Continue;
            End If;
            //подменяем координату: 2 - это индекс измерения в источнике; 1 - это индекс элемента в измерении. 
            dcr.Coord.Item[2] := 1;
            v:= m.Item[dcr.coord];
            t.Cell[i,j].Style.Hint := v.ToString();
        End For;
    End For;
    t.EndUpdate();
End Sub OnAfterExecuteDataIsland;

См. также:

IPrxDataIsland