Was sometimes getting an error message during the Paste operation of a table Row or Column. B2012-085 and B2012-086
Fixed some other Copy/Paste Rows/Columns table bugs as well.
This commit is contained in:
parent
3ac0159ce5
commit
bfb9e3c19e
@ -2311,8 +2311,12 @@ namespace Volian.Controls.Library
|
|||||||
//foreach (CellRange crng in this.MergedRanges)
|
//foreach (CellRange crng in this.MergedRanges)
|
||||||
// Console.WriteLine("merge ranges [{0},{1}] - [{2},{3}]", crng.r1, crng.c1, crng.r2, crng.c2);
|
// Console.WriteLine("merge ranges [{0},{1}] - [{2},{3}]", crng.r1, crng.c1, crng.r2, crng.c2);
|
||||||
}
|
}
|
||||||
|
private void AdjustMergedRows(int row, bool above, bool removing)
|
||||||
|
{
|
||||||
|
AdjustMergedRows(row, 1, above, removing);
|
||||||
|
}
|
||||||
|
|
||||||
private void AdjustMergedRows(int row, bool above, bool removing)
|
private void AdjustMergedRows(int row, int cnt, bool above, bool removing)
|
||||||
{
|
{
|
||||||
CellRangeCollection crc = new CellRangeCollection(this);
|
CellRangeCollection crc = new CellRangeCollection(this);
|
||||||
if (removing)
|
if (removing)
|
||||||
@ -2324,7 +2328,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (r.TopRow != r.BottomRow)
|
if (r.TopRow != r.BottomRow)
|
||||||
{
|
{
|
||||||
cr.r2--;
|
cr.r2 -= cnt;
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2333,8 +2337,8 @@ namespace Volian.Controls.Library
|
|||||||
if (row <= r.r1)
|
if (row <= r.r1)
|
||||||
{
|
{
|
||||||
if (row < r.r1)
|
if (row < r.r1)
|
||||||
cr.r1--;
|
cr.r1 -= cnt;
|
||||||
cr.r2--;
|
cr.r2 -= cnt;
|
||||||
}
|
}
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
}
|
}
|
||||||
@ -2347,34 +2351,40 @@ namespace Volian.Controls.Library
|
|||||||
int inspos = (above) ? row : row - 1;
|
int inspos = (above) ? row : row - 1;
|
||||||
if (r.ContainsRow(inspos))
|
if (r.ContainsRow(inspos))
|
||||||
{
|
{
|
||||||
if ((above && cr.r1 == inspos) || (!above && cr.r2 == inspos))
|
bool adjustMergeValues = true;
|
||||||
|
if (cr.r1 == row && cr.r2 == row + cnt -1)
|
||||||
|
adjustMergeValues = false; // don't add to existing merge range - we will add a new merge range for this copy
|
||||||
|
for (int insCnt = 0; insCnt < cnt; insCnt++)
|
||||||
{
|
{
|
||||||
string tstr = "";
|
if ((above && cr.r1 == inspos) || (!above && cr.r2 == inspos))
|
||||||
int newrow = 0;
|
|
||||||
if (above)
|
|
||||||
{
|
{
|
||||||
if (this[cr.r1 + 1, cr.c1] != null)
|
string tstr = "";
|
||||||
tstr = this[cr.r1 + 1, cr.c1].ToString();
|
int newrow = 0;
|
||||||
newrow = cr.r1;
|
if (above)
|
||||||
|
{
|
||||||
|
if (this[cr.r1 + cnt, cr.c1] != null)
|
||||||
|
tstr = this[cr.r1 + cnt, cr.c1].ToString();
|
||||||
|
newrow = cr.r1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this[cr.r2, cr.c1] != null)
|
||||||
|
tstr = this[cr.r2, cr.c1].ToString();
|
||||||
|
newrow = cr.r2 + cnt;
|
||||||
|
}
|
||||||
|
if (tstr != null && tstr.Length > 0)
|
||||||
|
for (int x = cr.c1; x <= cr.c2; x++)
|
||||||
|
this[newrow, x] = tstr;
|
||||||
}
|
}
|
||||||
else
|
if (adjustMergeValues) cr.r2++;
|
||||||
{
|
|
||||||
if (this[cr.r2, cr.c1] != null)
|
|
||||||
tstr = this[cr.r2, cr.c1].ToString();
|
|
||||||
newrow = cr.r2 + 1;
|
|
||||||
}
|
|
||||||
if (tstr != null && tstr.Length > 0)
|
|
||||||
for (int x = cr.c1; x <= cr.c2; x++)
|
|
||||||
this[newrow, x] = tstr;
|
|
||||||
}
|
}
|
||||||
cr.r2++;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (inspos < cr.r1)
|
if (inspos < cr.r1)
|
||||||
{
|
{
|
||||||
cr.r1++;
|
cr.r1 += cnt;
|
||||||
cr.r2++;
|
cr.r2 += cnt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
@ -2387,7 +2397,12 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AdjustMergedColumns(int col, bool left, bool removing)
|
private void AdjustMergedColumns(int col, bool left, bool removing)
|
||||||
|
{
|
||||||
|
AdjustMergedColumns(col, 1, left, removing); //adjusting for just one column
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AdjustMergedColumns(int col, int cnt, bool left, bool removing)
|
||||||
{
|
{
|
||||||
CellRangeCollection crc = new CellRangeCollection(this);
|
CellRangeCollection crc = new CellRangeCollection(this);
|
||||||
if (removing)
|
if (removing)
|
||||||
@ -2399,7 +2414,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (r.LeftCol != r.RightCol)
|
if (r.LeftCol != r.RightCol)
|
||||||
{
|
{
|
||||||
cr.c2--;
|
cr.c2 -= cnt;
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2407,9 +2422,8 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (col < cr.c1)
|
if (col < cr.c1)
|
||||||
{
|
{
|
||||||
cr.c1--;
|
cr.c1-=cnt;
|
||||||
cr.c2--;
|
cr.c2-=cnt; }
|
||||||
}
|
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2421,31 +2435,34 @@ namespace Volian.Controls.Library
|
|||||||
int inspos = (left) ? col : col - 1;
|
int inspos = (left) ? col : col - 1;
|
||||||
if (r.ContainsCol(inspos))
|
if (r.ContainsCol(inspos))
|
||||||
{
|
{
|
||||||
string tstr = "";
|
for (int insCnt = 0; insCnt < cnt; insCnt++)
|
||||||
int newcol = 0;
|
|
||||||
if (left)
|
|
||||||
{
|
{
|
||||||
if (inspos == cr.c1)
|
string tstr = "";
|
||||||
tstr = (this[cr.r1, cr.c1 + 1] == null)?"":this[cr.r1, cr.c1 + 1].ToString();
|
int newcol = 0;
|
||||||
|
if (left)
|
||||||
|
{
|
||||||
|
if (inspos == cr.c1)
|
||||||
|
tstr = (this[cr.r1, cr.c1 + 1] == null) ? "" : this[cr.r1, cr.c1 + 1].ToString();
|
||||||
|
else
|
||||||
|
tstr = (this[cr.r1, cr.c1] == null) ? "" : this[cr.r1, cr.c1].ToString();
|
||||||
|
newcol = cr.c1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
tstr = (this[cr.r1, cr.c1] == null) ? "" : this[cr.r1, cr.c1].ToString();
|
{
|
||||||
newcol = cr.c1;
|
if (this[cr.r1, cr.c2] != null)
|
||||||
}
|
tstr = this[cr.r1, cr.c2].ToString();
|
||||||
else
|
newcol = cr.c2 + 1;
|
||||||
{
|
}
|
||||||
if (this[cr.r1, cr.c2] != null)
|
for (int x = cr.r1; x <= cr.r2; x++)
|
||||||
tstr = this[cr.r1, cr.c2].ToString();
|
this[x, newcol] = tstr;
|
||||||
newcol = cr.c2 + 1;
|
|
||||||
}
|
|
||||||
for (int x = cr.r1; x <= cr.r2; x++)
|
|
||||||
this[x, newcol] = tstr;
|
|
||||||
|
|
||||||
cr.c2++;
|
cr.c2++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (col <= r.c1)
|
else if (col <= r.c1)
|
||||||
{
|
{
|
||||||
cr.c1++;
|
cr.c1+=cnt;
|
||||||
cr.c2++;
|
cr.c2+=cnt;
|
||||||
}
|
}
|
||||||
crc.Add(cr);
|
crc.Add(cr);
|
||||||
}
|
}
|
||||||
@ -2814,45 +2831,46 @@ namespace Volian.Controls.Library
|
|||||||
if (MyCopyInfo.MyCopiedFlexGrid == null || MyCopyInfo.MyCopyOption != GridCopyOption.Row) return;
|
if (MyCopyInfo.MyCopiedFlexGrid == null || MyCopyInfo.MyCopyOption != GridCopyOption.Row) return;
|
||||||
int rowsToAdd = MyCopyInfo.MyCopiedCellRange.r2 - MyCopyInfo.MyCopiedCellRange.r1 + 1;
|
int rowsToAdd = MyCopyInfo.MyCopiedCellRange.r2 - MyCopyInfo.MyCopiedCellRange.r1 + 1;
|
||||||
int colsToAdd = Math.Max((MyCopyInfo.MyCopiedCellRange.c2 - MyCopyInfo.MyCopiedCellRange.c1 + 1) - Cols.Count, 0);
|
int colsToAdd = Math.Max((MyCopyInfo.MyCopiedCellRange.c2 - MyCopyInfo.MyCopiedCellRange.c1 + 1) - Cols.Count, 0);
|
||||||
int rowOffset = Selection.r1 + (pp == enmPastePos.After ? 1 : 0) - MyCopyInfo.MyCopiedCellRange.r1;
|
|
||||||
int selR1 = Selection.r1;
|
int selR1 = Selection.r1;
|
||||||
|
int selR2 = Selection.r2;
|
||||||
|
int rowOffset = selR1 + (pp == enmPastePos.After ?(selR2-selR1)+1 : 0) - MyCopyInfo.MyCopiedCellRange.r1;
|
||||||
|
|
||||||
// If the rows we are copying has more columns than the current table, then append then needed columns to the grid
|
// If the rows we are copying has more columns than the current table, then append then needed columns to the grid
|
||||||
if (colsToAdd > 0)
|
if (colsToAdd > 0)
|
||||||
{
|
{
|
||||||
Cols.Add(colsToAdd);
|
Cols.Add(colsToAdd);
|
||||||
AdjustMergedColumns(Cols.Count - 1, false, false);
|
AdjustMergedColumns(Cols.Count - 1, colsToAdd, false, false);
|
||||||
MyBorders.InsertColumns(Cols.Count - colsToAdd - 1, colsToAdd);
|
MyBorders.InsertColumns(Cols.Count - colsToAdd - 1, colsToAdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pp)
|
switch (pp)
|
||||||
{
|
{
|
||||||
case enmPastePos.Before:
|
case enmPastePos.Before:
|
||||||
//this.Rows.InsertRange(Selection.r1,rowsToAdd);
|
|
||||||
this.Rows.InsertRange(selR1, rowsToAdd);
|
this.Rows.InsertRange(selR1, rowsToAdd);
|
||||||
AdjustMergedRows(selR1, true, false);
|
AdjustMergedRows(selR1, rowsToAdd, true, false);
|
||||||
|
MyBorders.InsertRows(Rows.Count - rowsToAdd - 1, rowsToAdd);
|
||||||
break;
|
break;
|
||||||
case enmPastePos.After:
|
case enmPastePos.After:
|
||||||
if (selR1 < Rows.Count - 1)
|
if (selR2+1 < Rows.Count - 1)
|
||||||
{
|
{
|
||||||
//this.Rows.InsertRange(Selection.r1 + 1, rowsToAdd);
|
this.Rows.InsertRange(selR2 + 1, rowsToAdd);
|
||||||
this.Rows.InsertRange(selR1 + 1, rowsToAdd);
|
AdjustMergedRows(selR1+1, rowsToAdd, false, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
this.Rows.Add(rowsToAdd);
|
this.Rows.Add(rowsToAdd);
|
||||||
AdjustMergedRows(selR1 + 1, false, false);
|
MyBorders.InsertRows(Rows.Count - rowsToAdd - 1, rowsToAdd);
|
||||||
break;
|
break;
|
||||||
case enmPastePos.Replace:
|
case enmPastePos.Replace:
|
||||||
if (rowsToAdd > Rows.Count - Selection.r1)
|
if (rowsToAdd > Rows.Count - Selection.r1)
|
||||||
{
|
{
|
||||||
this.Rows.Add(rowsToAdd - (Rows.Count - Selection.r1));
|
int numToAdd = rowsToAdd - (Rows.Count = selR1);
|
||||||
AdjustMergedRows(selR1, false, false);
|
this.Rows.Add(numToAdd);
|
||||||
|
AdjustMergedRows(selR1, numToAdd, false, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1 + rowOffset, MyCopyInfo.MyCopiedCellRange.c1, MyCopyInfo.MyCopiedCellRange.r2 + rowOffset, MyCopyInfo.MyCopiedCellRange.c2);
|
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1 + rowOffset, MyCopyInfo.MyCopiedCellRange.c1, MyCopyInfo.MyCopiedCellRange.r2 + rowOffset, MyCopyInfo.MyCopiedCellRange.c2);
|
||||||
|
|
||||||
for (int r = MyCopyInfo.MyCopiedCellRange.r1; r <= MyCopyInfo.MyCopiedCellRange.r2; r++)
|
for (int r = MyCopyInfo.MyCopiedCellRange.r1; r <= MyCopyInfo.MyCopiedCellRange.r2; r++)
|
||||||
{
|
{
|
||||||
Rows[r + rowOffset].Height = MyCopyInfo.MyCopiedFlexGrid.Rows[r].Height;
|
Rows[r + rowOffset].Height = MyCopyInfo.MyCopiedFlexGrid.Rows[r].Height;
|
||||||
@ -2863,15 +2881,26 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
Cols[c].Width = Math.Max(Cols[c].Width, MyCopyInfo.MyCopiedFlexGrid.Cols[c].Width);
|
Cols[c].Width = Math.Max(Cols[c].Width, MyCopyInfo.MyCopiedFlexGrid.Cols[c].Width);
|
||||||
CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1, crm.r2 + rowOffset, crm.c2);
|
CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1, crm.r2 + rowOffset, crm.c2);
|
||||||
|
// if the paste is above - copy merge range for the destination
|
||||||
|
// if the paste is below - put back the range for the source location
|
||||||
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
||||||
MergedRanges.Add(cr);
|
MergedRanges.Add(cr);
|
||||||
this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c];
|
this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c];
|
||||||
MatchStyle(crm, cr);
|
MatchStyle(crm, cr);
|
||||||
PasteBorders(r + rowOffset, c, r, c);
|
PasteBorders(r + rowOffset, c, r, c);
|
||||||
|
// if the paste is above - put back the range for the source location
|
||||||
|
// if the paste is below - copy merge range for the destination
|
||||||
|
int r1 = crm.r1 + rowsToAdd - rowOffset;
|
||||||
|
int r2 = crm.r2 + rowsToAdd - rowOffset;
|
||||||
|
CellRange ncr = GetCellRange(r1, crm.c1, r2, crm.c2);
|
||||||
|
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
||||||
|
MergedRanges.Add(ncr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
|
CopyToCopiedFlexGrid(MyCopyInfo.MyCopyOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MatchStyle(CellRange crm, CellRange cr)
|
private void MatchStyle(CellRange crm, CellRange cr)
|
||||||
@ -2904,8 +2933,9 @@ namespace Volian.Controls.Library
|
|||||||
|
|
||||||
int colsToAdd = MyCopyInfo.MyCopiedCellRange.c2 - MyCopyInfo.MyCopiedCellRange.c1 + 1;
|
int colsToAdd = MyCopyInfo.MyCopiedCellRange.c2 - MyCopyInfo.MyCopiedCellRange.c1 + 1;
|
||||||
int rowsToAdd = Math.Max((MyCopyInfo.MyCopiedCellRange.r2 - MyCopyInfo.MyCopiedCellRange.r1 + 1) - Rows.Count, 0);
|
int rowsToAdd = Math.Max((MyCopyInfo.MyCopiedCellRange.r2 - MyCopyInfo.MyCopiedCellRange.r1 + 1) - Rows.Count, 0);
|
||||||
int colOffset = Selection.c1 + (pp == enmPastePos.After ? 1 : 0) - MyCopyInfo.MyCopiedCellRange.c1;
|
|
||||||
int selC1 = Selection.c1;
|
int selC1 = Selection.c1;
|
||||||
|
int selC2 = Selection.c2;
|
||||||
|
int colOffset = selC1 + (pp == enmPastePos.After ? (selC2-selC1)+1 : 0) - MyCopyInfo.MyCopiedCellRange.c1;
|
||||||
|
|
||||||
// If the columns we are copying has more rows than the current table, then append the needed rows to the grid
|
// If the columns we are copying has more rows than the current table, then append the needed rows to the grid
|
||||||
if (rowsToAdd > 0)
|
if (rowsToAdd > 0)
|
||||||
@ -2918,32 +2948,33 @@ namespace Volian.Controls.Library
|
|||||||
switch (pp)
|
switch (pp)
|
||||||
{
|
{
|
||||||
case enmPastePos.Before:
|
case enmPastePos.Before:
|
||||||
//this.Cols.InsertRange(Selection.c1, colsToAdd);
|
|
||||||
this.Cols.InsertRange(selC1, colsToAdd);
|
this.Cols.InsertRange(selC1, colsToAdd);
|
||||||
AdjustMergedColumns(selC1, true, false);
|
AdjustMergedColumns(selC1, colsToAdd, true, false);
|
||||||
|
MyBorders.InsertColumns(Cols.Count - colsToAdd - 1, colsToAdd);
|
||||||
break;
|
break;
|
||||||
case enmPastePos.After:
|
case enmPastePos.After:
|
||||||
//if (Selection.c1 < Cols.Count - 1)
|
if (selC2+1 < Cols.Count - 1)
|
||||||
// this.Cols.InsertRange(Selection.c1 + 1, colsToAdd);
|
{
|
||||||
if (selC1 < Cols.Count - 1)
|
this.Cols.InsertRange(selC2+1, colsToAdd);
|
||||||
this.Cols.InsertRange(selC1 + 1, colsToAdd);
|
AdjustMergedColumns(selC1+1, colsToAdd, false, false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
this.Cols.Add(colsToAdd);
|
this.Cols.Add(colsToAdd);
|
||||||
AdjustMergedColumns(selC1 + 1, false, false);
|
MyBorders.InsertColumns(Cols.Count - colsToAdd - 1, colsToAdd);
|
||||||
break;
|
break;
|
||||||
case enmPastePos.Replace:
|
case enmPastePos.Replace:
|
||||||
//if (colsToAdd > Cols.Count - Selection.c1)
|
|
||||||
// this.Cols.Add(colsToAdd - (Cols.Count - Selection.c1));
|
|
||||||
if (colsToAdd > Cols.Count - selC1)
|
if (colsToAdd > Cols.Count - selC1)
|
||||||
{
|
{
|
||||||
this.Cols.Add(colsToAdd - (Cols.Count - selC1));
|
int numToAdd = colsToAdd - (Cols.Count - selC1);
|
||||||
AdjustMergedColumns(selC1, true, false);
|
this.Cols.Add(numToAdd);
|
||||||
|
AdjustMergedColumns(selC1, numToAdd, true, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1, MyCopyInfo.MyCopiedCellRange.c1 + colOffset, MyCopyInfo.MyCopiedCellRange.r2, MyCopyInfo.MyCopiedCellRange.c2 + colOffset);
|
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1, MyCopyInfo.MyCopiedCellRange.c1 + colOffset, MyCopyInfo.MyCopiedCellRange.r2, MyCopyInfo.MyCopiedCellRange.c2 + colOffset);
|
||||||
|
|
||||||
|
// Fix the merge ranges
|
||||||
for (int c = MyCopyInfo.MyCopiedCellRange.c1; c <= MyCopyInfo.MyCopiedCellRange.c2; c++)
|
for (int c = MyCopyInfo.MyCopiedCellRange.c1; c <= MyCopyInfo.MyCopiedCellRange.c2; c++)
|
||||||
{
|
{
|
||||||
Cols[c + colOffset].Width = MyCopyInfo.MyCopiedFlexGrid.Cols[c].Width;
|
Cols[c + colOffset].Width = MyCopyInfo.MyCopiedFlexGrid.Cols[c].Width;
|
||||||
@ -2954,15 +2985,28 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
Rows[r].Height = Math.Max(Rows[r].Height, MyCopyInfo.MyCopiedFlexGrid.Rows[r].Height);
|
Rows[r].Height = Math.Max(Rows[r].Height, MyCopyInfo.MyCopiedFlexGrid.Rows[r].Height);
|
||||||
CellRange cr = GetCellRange(crm.r1, crm.c1 + colOffset, crm.r2, crm.c2 + colOffset);
|
CellRange cr = GetCellRange(crm.r1, crm.c1 + colOffset, crm.r2, crm.c2 + colOffset);
|
||||||
|
// if the paste is to the left - copy merge range for the destination
|
||||||
|
// if the paste is to the right - put back the range for the source location
|
||||||
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
||||||
MergedRanges.Add(cr);
|
MergedRanges.Add(cr);
|
||||||
|
// copy cell text to the destination, copy the style, copy the cell borders
|
||||||
this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
|
this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
|
||||||
MatchStyle(crm, cr);
|
MatchStyle(crm, cr);
|
||||||
PasteBorders(r, c + colOffset, r, c);
|
PasteBorders(r, c + colOffset, r, c);
|
||||||
|
// if the paste is to the left - put back the range for the source location
|
||||||
|
// if the paste is to the right - copy merge range for the destination
|
||||||
|
int c1 = crm.c1 + colsToAdd - colOffset;
|
||||||
|
int c2 = crm.c2 + colsToAdd - colOffset;
|
||||||
|
CellRange ncr = GetCellRange(crm.r1, c1, crm.r2, c2);
|
||||||
|
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
|
||||||
|
MergedRanges.Add(ncr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
|
CopyToCopiedFlexGrid(MyCopyInfo.MyCopyOption);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PasteCopiedCells()
|
public void PasteCopiedCells()
|
||||||
@ -2986,21 +3030,25 @@ namespace Volian.Controls.Library
|
|||||||
if (rowsToAdd > 0)
|
if (rowsToAdd > 0)
|
||||||
{
|
{
|
||||||
if (selR2 < Rows.Count - 1)
|
if (selR2 < Rows.Count - 1)
|
||||||
|
{
|
||||||
this.Rows.InsertRange(selR2 + 1, rowsToAdd);
|
this.Rows.InsertRange(selR2 + 1, rowsToAdd);
|
||||||
|
AdjustMergedRows(selR2 + 1, false, false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
this.Rows.Add(rowsToAdd);
|
this.Rows.Add(rowsToAdd);
|
||||||
MyBorders.InsertRows(selR2,rowsToAdd);
|
MyBorders.InsertRows(selR2,rowsToAdd);
|
||||||
AdjustMergedRows(selR2 + 1, false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (colsToAdd > 0)
|
if (colsToAdd > 0)
|
||||||
{
|
{
|
||||||
if (selC2 < Cols.Count - 1)
|
if (selC2 < Cols.Count - 1)
|
||||||
|
{
|
||||||
this.Cols.InsertRange(selC2 + 1, colsToAdd);
|
this.Cols.InsertRange(selC2 + 1, colsToAdd);
|
||||||
|
AdjustMergedColumns(selC2 + 1, false, false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
this.Cols.Add(colsToAdd);
|
this.Cols.Add(colsToAdd);
|
||||||
MyBorders.InsertColumns(selC2,colsToAdd);
|
MyBorders.InsertColumns(selC2,colsToAdd);
|
||||||
AdjustMergedColumns(selC2 + 1, false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1 + rowOffset, MyCopyInfo.MyCopiedCellRange.c1 + colOffset, MyCopyInfo.MyCopiedCellRange.r2 + rowOffset, MyCopyInfo.MyCopiedCellRange.c2 + colOffset);
|
RemoveMergedRanges(MyCopyInfo.MyCopiedCellRange.r1 + rowOffset, MyCopyInfo.MyCopiedCellRange.c1 + colOffset, MyCopyInfo.MyCopiedCellRange.r2 + rowOffset, MyCopyInfo.MyCopiedCellRange.c2 + colOffset);
|
||||||
@ -3026,6 +3074,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
|
CopyToCopiedFlexGrid(MyCopyInfo.MyCopyOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion // Copy/Paste
|
#endregion // Copy/Paste
|
||||||
|
Loading…
x
Reference in New Issue
Block a user