现在的项目中有一个文本编辑器(类似记事本的),是之前的程序员写的,他是自己管理redo-undo栈,我看了一下,根本没法用那个redo-undo功能(只能redo-undo一次,晕死),而且其中的逻辑超级乱。
我改写了一下,代码还算简洁,由于是公司的项目,我不能贴代码,只能讲讲我实现的思路。
具体就是在编辑框输入的同时,将前面的输入压到undo栈,但要注意,当前在文本框的文本应该将其入redo栈。
每次编辑框发生修改时,undo栈压入的是redo栈的top元素,然后当前编辑框中的文本再入redo栈。但要注意的是编辑框刚打开时是有初始化值的(类似记事本打开一个txt文件,txt中本身存在内容),因此一开始的时候这个初始值是要压入到undo栈而不能压入到redo栈。
做undo的时候注意undo栈不能一直pop,因为undo的底元素师文本框的初始值。
而redo的时候redo栈也不能一直pop,因为redo栈的顶元素是最后修改键入的那个元素。
而文本框显示的值是redo或者undo的最新值。当然,这个值如前面所说,是栈里面的元素,可能这个元素是栈中弹出的元素,也可能只是取栈顶的元素(看是否到达了redo-undo栈的size为1)。
分享到:
相关推荐
src =" node_modules/undo-redo-vuex/dist/undo-redo-vuex.min.js " > </ script > 模块 import undoRedo from "undo-redo-vuex" ; 用法 作为的标准, undo-redo-vuex可以用于以下设置: 如何在商店模块中...
这个是做实验时,简单基本的Undo、Redo的操作、在一个winForm中实现,并且可以设置Undo的最大次数。包中除了项目外,还附有报告.
redux-undo-redo 用于Redux的撤消重做软件包 该软件包的灵感主要来自开发的。 该软件包将还原重做历史记录添加到还原状态。 对于每个不可撤消的操作,您必须提供其还原操作。 它还支持分组操作,使您可以一步一步...
Multiple Level Undo/Redo多级Undo/Redo功能的实现(7KB)
BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...
RAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和...
Estées elcódigodel Mastermind con latécnicadel doble despacho,Sobre el que agregaremos los patrones y funcionalida necesaria para und Undo / Redo con undiseñoCorrecto。 先决条件再录取通知书...
针对一个window窗体实现了undo/redo功能,包括textBox,checkBox, listBox, comboBox, radioButton以及按钮焦点变化的实现。可能有些小bug思路仅供参考。完整的工程文件,VS打开即可运行,欢迎评论~ 详细说明参见...
本工程用vs2008打开,但需要qt库的支持,需要先安装qt-in-vs2008,才可通过编译。或者直接将里面的代码拷贝出来,然后在自己的环境中编译也行。代码中应用了QUndoCommand来实现撤销与反撤销操作。
使用React 撤消/重做功能。 安装 yarn add use-undo 用法 import React from 'react' ; import ReactDOM from 'react-dom' ; import useUndo from 'use-undo' ; const App = ( ) => { const [ countState , { ...
Delphi 中实现Redo Undo的一个简单实例,包含源码
实现redo,undo操作,来源于网络分享下。
undo通过动态调度提供简单的undo-redo功能。 它是命令模式的一种实现,其中所有修改都已完成。b undo提供具有动态调度功能的简单undo-redo功能。 它是命令模式的一种实现,其中所有修改都是通过创建应用修改的命令...
oracle_redo_undo
git submodule add https://github.com/mgood7123/Undo-Redo-CircularBuffer path/where/Undo-Redo-CircularBuffer/should/reside/Undo-Redo-CircularBuffer git submodule update --init --recursive 建立和测试 ...
第9章第9章 redo与undo_a.pdf redo与undo_a.pdf第9章 redo与undo_a.pdf
Arcgis Engine Undo 和 Redo 功能实现
redo undo framework source code redo undo framework source code
Undo/Redo framework for editing controls in a Windows application 在Windows应用程序中编辑控件的撤销/重做框架。
cpp文件 undo redo 原型设计 部分代码 class Command { public: virtual BOOL UnDo() = 0; virtual BOOL ReDo() = 0; };