Esempio n. 1
0
        protected override void DoRef(TRefToken reft, bool RefIsInInsertingSheet)
        {
            int r = reft.Row; int c = reft.Col;

            if (RefIsInInsertingSheet)
            {
                TXlsCellRange NewRange = CellRange.Offset(NewRow, NewCol);

                bool RowIsOffset = reft.CanHaveRelativeOffsets && !reft.RowAbs;  //CanHaveRelativeOffsets is true for RefN tokens.
                bool ColIsOffset = reft.CanHaveRelativeOffsets && !reft.ColAbs;

                if (RowIsOffset)
                {
                    r = TBaseRefToken.WrapRow(FmlaRow + r, false);
                }
                if (ColIsOffset)
                {
                    c = TBaseRefToken.WrapColumn(FmlaCol + c, false);
                }

                bool RefInside  = CellRange.HasRow(r) && CellRange.HasCol(c);
                bool FmlaInside = CellRange.HasRow(FmlaRow) && CellRange.HasCol(FmlaCol);

                //only if the ref was *not* on the original range.
                if (!RefInside && NewRange.HasRow(r) && NewRange.HasCol(c))
                {
                    reft.CreateInvalidRef();
                }
                else
                {
                    r = MoveRef(reft, ref reft.Row, r, 0, NewRow - CellRange.Top, FmlaRow, RowIsOffset, RefInside, FmlaInside, FlxConsts.Max_Rows, false);
                    c = MoveRef(reft, ref reft.Col, c, 0, NewCol - CellRange.Left, FmlaCol, ColIsOffset, RefInside, FmlaInside, FlxConsts.Max_Columns, false);
                }
            }

            if (Bounds != null)
            {
                Bounds.AddRow(r);
                Bounds.AddCol(c);
            }
        }
Esempio n. 2
0
        internal void InsertAndCopyRange(TXlsCellRange SourceRange, int DestRow, int DestCol, int aRowCount, int aColCount, TRangeCopyMode CopyMode, TFlxInsertMode InsertMode, TSheetInfo SheetInfo)
        {
            TXlsCellRange NewCellRange = SourceRange.Offset(DestRow, DestCol);

            FList[SheetInfo.InsSheet].InsertAndCopyRange(SourceRange, DestRow, DestCol, aRowCount, aColCount, CopyMode, InsertMode, SheetInfo);
            for (int i = 0; i < Count; i++)
            {
                if (i != SheetInfo.InsSheet)
                {
                    SheetInfo.SourceFormulaSheet = i;
                    SheetInfo.DestFormulaSheet   = i;
                    FList[i].ArrangeInsertRange(NewCellRange, aRowCount, aColCount, SheetInfo);
                }
            }
        }