实现撤销功能的思想

实现撤销功能的时候,有一个大致的思想是,先写:

1.一个保存的方法

2.一个读取的方法

让后再在需要撤销和恢复的地方,使用这两个方法,当然数据是存储在缓存中去的;

事先定义:

    '撤消恢复保存
    Public Const RedoMax = 100
    Public LastRedo(RedoMax + 1) As String, LastRedoMode(RedoMax / 2) As Boolean, CurrentP As Integer, SavedMax As Integer
保存方法:

    ' 撤销保存
    Public Sub RedoSave(ByVal s1 As String)
        Dim i1 As Integer
        ' 保存处理:已达上限和未达上限
        If pTFile = RedoMax Then
            For i1 = 1 To RedoMax - 1
                LastRedo(i1) = LastRedo(i1 + 1)
            Next
            LastRedo(RedoMax) = s1
            CurrentP = RedoMax
        Else
            CurrentP = CurrentP + 1
            LastRedo(CurrentP) = s1
        End If
        '最大保存量
        If SavedMax < CurrentP Then
            SavedMax = CurrentP
        ElseIf SavedMax > CurrentP Then
            For i1 = CurrentP + 1 To RedoMax
                LastRedo(i1) = ""
            Next
            SavedMax = CurrentP
        End If
    End Sub
读取方法:

    Public Sub RedoRead(ByRef s1 As String, ByVal RedoMode As Integer)
        If RedoMode = 1 Then
            If CurrentP < RedoMax Then
                CurrentP = CurrentP + 1 'Redo
            Else
                Exit Sub
            End If
        ElseIf RedoMode = 2 Then
            If CurrentP > 1 Then
                CurrentP = CurrentP - 1 'Undo
            Else
                Exit Sub
            End If
        End If
        If CurrentP Mod 2 = 0 Then
            LastRedoMode(CurrentP / 2) = False
        ElseIf CurrentP Mod 2 = 1 Then
            LastRedoMode(CurrentP / 2) = True
        End If
        If LastRedoMode(CurrentP / 2) = False AndAlso RedoMode = 2 Then
            CurrentP = CurrentP - 1 ' CurrentP减1处理
            s1 = LastRedo(CurrentP) ' 减1恢复
        ElseIf LastRedoMode(CurrentP / 2) = True AndAlso RedoMode = 1 Then
            CurrentP = CurrentP + 1 ' CurrentP加1处理
            s1 = LastRedo(CurrentP) ' 加1恢复
        Else
            s1 = LastRedo(CurrentP) ' 正常恢复
        End If
    End Sub

基于上面的两个方法,当在进行编辑操作的时候,调用保存的方法;

在进行恢复的时候,调用读取的方法;

通过以上两个方法,就可以进行撤销和恢复了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值