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); } }
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); } } }