internal void InsertAndCopyRange(TXlsCellRange SourceRange, TFlxInsertMode InsertMode, int DestRow, int DestCol, int aRowCount, int aColCount, TRangeCopyMode CopyMode, TSheetInfo SheetInfo) { int aCount = Count; for (int i = 0; i < aCount; i++) { this[i].ArrangeInsertRange(SourceRange.OffsetForIns(DestRow, DestCol, InsertMode), aRowCount, aColCount, SheetInfo); } if (CopyMode == TRangeCopyMode.None) { return; } int RTop = SourceRange.Top; int RLeft = SourceRange.Left; if (DestRow <= SourceRange.Top) { RTop += aRowCount * SourceRange.RowCount; } if (DestCol <= SourceRange.Left) { RLeft += aColCount * SourceRange.ColCount; } int RRight = RLeft + SourceRange.ColCount - 1; int RBottom = RTop + SourceRange.RowCount - 1; //Copy the cells. if (aRowCount > 0 || aColCount > 0) { for (int i = 0; i < aCount; i++) { THLinkRecord r = this[i]; if (r.FirstCol >= RLeft && r.LastCol <= RRight && r.FirstRow >= RTop && r.LastRow <= RBottom) { for (int rc = 0; rc < aRowCount; rc++) { Add(((THLinkRecord)TBaseRecord.Clone(r, SheetInfo)).Offset(DestRow - RTop + rc * SourceRange.RowCount, DestCol - RLeft)); } for (int cc = 0; cc < aColCount; cc++) { Add(((THLinkRecord)TBaseRecord.Clone(r, SheetInfo)).Offset(DestRow - RTop, DestCol - RLeft + cc * SourceRange.ColCount)); } } } } }
internal static TSheetProtection Clone(TSheetProtection Source, TSheetInfo SheetInfo) { TSheetProtection Result = new TSheetProtection(); if (Source != null) { Result.Protect = (TProtectRecord)TBaseRecord.Clone(Source.Protect, SheetInfo); Result.ScenProtect = (TScenProtectRecord)TBaseRecord.Clone(Source.ScenProtect, SheetInfo); Result.ObjProtect = (TObjProtectRecord)TBaseRecord.Clone(Source.ObjProtect, SheetInfo); Result.Password = (TPasswordRecord)TBaseRecord.Clone(Source.Password, SheetInfo); Result.SheetProtect = (TSheetProtectRecord)TBaseRecord.Clone(Source.SheetProtect, SheetInfo); } return(Result); }
protected virtual T CloneRecord(T br, TSheetInfo SheetInfo) { return((T)TBaseRecord.Clone(br, SheetInfo)); }