Posted 19 March 2018, 2:31 am EST
Hello,
To get it to work with Undo you will have to create a custom Clear undo action. Please refer to the code below:
Public Class clearRangeAction
Inherits FarPoint.Win.Spread.UndoRedo.UndoAction
Dim sheetView As FarPoint.Win.Spread.SheetView
Dim cellRange As FarPoint.Win.Spread.Model.CellRange
Dim rowInfo As FarPoint.Win.Spread.RowClipInfoRange
Dim columnInfo As FarPoint.Win.Spread.ColumnClipInfoRange
Dim cellInfo As FarPoint.Win.Spread.CellInfoRange
Public Sub New()
End Sub
Public Sub New(ByVal sheetView As FarPoint.Win.Spread.SheetView, ByVal cellRange As FarPoint.Win.Spread.Model.CellRange)
Me.sheetView = sheetView
Me.cellRange = cellRange
End Sub
Public Overrides Function PerformUndoAction(ByVal sender As Object) As Boolean
Dim spreadView As FarPoint.Win.Spread.SpreadView = Nothing
If TypeOf sender Is FarPoint.Win.Spread.SpreadView Then
spreadView = CType(sender, FarPoint.Win.Spread.SpreadView)
Else
Return False
End If
If sheetView Is Nothing Then
sheetView = spreadView.GetSheetView
End If
If (SaveUndoState()) And Not (sheetView Is Nothing) Then
sheetView.ClearRange(cellRange.Row, cellRange.Column, cellRange.RowCount, cellRange.ColumnCount, False)
Return True
End If
Return False
End Function
Protected Overrides Function SaveUndoState() As Boolean
If Not (sheetView Is Nothing) Then
If cellRange Is Nothing Then
cellRange = sheetView.GetSelection(0)
If cellRange Is Nothing Then
cellRange = New FarPoint.Win.Spread.Model.CellRange(sheetView.ActiveRowIndex, sheetView.ActiveColumnIndex, 1, 1)
End If
End If
If Not (cellRange Is Nothing) Then
If (cellRange.IsValidRange(sheetView, False)) Then
cellInfo = FarPoint.Win.Spread.CellInfoRange.FromCellRange(sheetView, cellRange, rowInfo, columnInfo)
End If
End If
End If
Return Not (cellInfo Is Nothing)
End Function
Public Overrides Function Undo(ByVal sender As Object) As Boolean
Dim spreadView As FarPoint.Win.Spread.SpreadView = Nothing
If TypeOf sender Is FarPoint.Win.Spread.SpreadView Then
spreadView = CType(sender, FarPoint.Win.Spread.SpreadView)
Else
Return False
End If
If (cellRange.IsValidRange(sheetView, False)) Then
If Not (cellInfo Is Nothing) Then
Dim dataObject As New DataObject()
dataObject.SetData(cellInfo)
If Not (columnInfo Is Nothing) Then
dataObject.SetData(columnInfo)
End If
If Not (rowInfo Is Nothing) Then
dataObject.SetData(rowInfo)
End If
If Not (sheetView.ActiveRowIndex = cellRange.Row) Or Not (sheetView.ActiveColumnIndex = cellRange.Column) Then
sheetView.SetActiveCell(cellRange.Row, cellRange.Column)
End If
sheetView.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All, dataObject)
Return True
End If
End If
Return False
End Function
End Class
Thanks,
Deepak Sharma