示例#1
0
 internal TCopiedImageData(int aRecordPos)
 {
     RecordPos   = 0;
     OrigObjects = new TExcelObjectList(true);
 }
示例#2
0
        internal void InsertAndCopyRange(int SheetNo, TXlsCellRange SourceRange,
                                         int DestRow, int DestCol, int aRowCount, int aColCount, TRangeCopyMode CopyMode, TFlxInsertMode InsertMode, bool aSemiAbsoluteMode, TExcelObjectList ObjectsInRange)
        {
            //Some error handling
            if (
                (SourceRange.Top > SourceRange.Bottom) || (SourceRange.Top < 0) || (DestRow > FlxConsts.Max_Rows) ||
                ((CopyMode != TRangeCopyMode.None) && (aRowCount > 0) && (SourceRange.Top < DestRow) && (DestRow <= SourceRange.Bottom)) ||
                (DestRow + (SourceRange.Bottom - SourceRange.Top + 1) * aRowCount - 1 > FlxConsts.Max_Rows) ||
                (DestRow < 0)
                )
            {
                XlsMessages.ThrowException(XlsErr.ErrBadCopyRows, FlxConsts.Max_Rows + 1);
            }

            if (
                (SourceRange.Left > SourceRange.Right) || (SourceRange.Left < 0) || (DestCol > FlxConsts.Max_Columns) ||
                ((CopyMode != TRangeCopyMode.None) && (aColCount > 0) && (SourceRange.Left < DestCol) && (DestCol <= SourceRange.Right)) ||
                (DestCol + (SourceRange.Right - SourceRange.Left + 1) * aColCount - 1 > FlxConsts.Max_Columns) ||
                (DestCol < 0)
                )
            {
                XlsMessages.ThrowException(XlsErr.ErrBadCopyCols, FlxConsts.Max_Columns + 1);
            }

            if ((SheetNo < 0) || (SheetNo >= Sheets.Count))
            {
                XlsMessages.ThrowException(XlsErr.ErrInvalidSheetNo, SheetNo, 0, Sheets.Count - 1);
            }

            TSheetInfo SheetInfo = new TSheetInfo(SheetNo, SheetNo, SheetNo, Globals, Globals, Sheets, Sheets, aSemiAbsoluteMode);

            SheetInfo.ObjectsInRange = ObjectsInRange;

            FSheets.InsertAndCopyRange(
                SourceRange, DestRow, DestCol, aRowCount, aColCount,
                CopyMode, InsertMode, SheetInfo);
            Globals.InsertAndCopyRange(
                SourceRange, InsertMode, DestRow, DestCol, aRowCount, aColCount,
                SheetInfo);

            //FSheets[SheetNo].FixAutoFilter(SheetNo);  Not needed now, we are going to replace it.
            if (aColCount > 0)
            {
                FSheets[SheetNo].AddNewAutoFilters(SheetNo, SourceRange.Top, SourceRange.Bottom, DestCol, DestCol);
            }
        }