问题标签 [undo-redo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1189 浏览

eclipse - 如何结合 Eclipse 数据绑定和 UndoableOperations?

在我的 RCP - 项目中,我使用 eclipse 数据绑定将 ui 与后端连接起来。我希望打开的编辑器中的每一个更改都是可撤销的。My Domainmodell 和 UI 分别在两个不同的插件中。

我目前的方法是为数据绑定实现我自己的 UpdateValueStrategy 类。我扩展了正常的 UpdateValueStrategy 并覆盖了 doSet Methode。

从那里我得到了 OperationHistory 和 Global UndoContext,然后我创建了一个新的 Operation。我有各种操作,如“ChangeCustomerName”和“ChangeCustomerNote”。

问题:

  1. 我是否需要自己实现撤消/重做逻辑,或者框架是否以某种方式支持我?
  2. 有没有比 UpdateValue - Strategy 类的 doSet() 更好的地方或方法来创建可撤消的操作。要访问已更改的文本字段并不容易。
0 投票
1 回答
1008 浏览

core-data - Core Data deleteObject:将属性设置为 nil

我正在我的应用程序中实现撤消/重做机制。这适用于很多情况。但是,我无法撤消过去的 deleteObject:。该对象已正确保存在撤消队列中,并且在调用撤消时我将其取回并重新插入到核心数据堆栈中。问题是当我删除它时,它的所有属性都设置为 nil 。

我有一个实体“画布”,它与一个“图形”实体有一个称为“图形”的一对多关系,它的逆设置为“画布”。删除一个图形,然后将其插入回来,是行不通的。代码如下(redo方法基本相同):

这是奇怪的:

删除前:

重做后:

你可以看到它是同一个对象,只是被 Core Data 完全漂白了。关系删除规则显然与它无关,因为我在测试中将它们设置为“无操作”。

0 投票
3 回答
663 浏览

php - Web应用程序中的“撤消删除”?

我已经看到越来越多的网站在按下删除按钮后提供撤消选项。按钮背后的逻辑是怎么做的?

该项目是否被 javascript 删除并从用户屏幕“消失”并添加了计划删除,这让用户有时间撤消它或它是如何工作的?

为用户提供撤消功能的其他选项是什么?

0 投票
3 回答
1015 浏览

c++ - 如何访问 QTextDocument 的 QUndoStack?

如何访问QUndoStacka QTextDocument

(例如,我希望能够将自定义QUndoCommand对象添加到文档的撤消堆栈)

0 投票
1 回答
1072 浏览

python - 如何撤消/重做 Tkinter 文本小部件中的某些内容?

我需要在 Python 中同时创建 Control-Z 和 Shift-Control-Z 函数。有人有什么想法吗?

另外我需要选择整个文本小部件的内容,有人知道该怎么做吗?

0 投票
2 回答
7504 浏览

python - Tkinter Text 小部件中的撤消和重做功能?

我需要在 Tkinter小部件中同时创建Control+ZShift+ Control+函数,以便可以撤消和重做事情。ZText

有谁知道如何做到这一点?

0 投票
2 回答
1981 浏览

iphone - 在 iPhone SDK 中使用 NSUndoManager 撤消/重做

我一直在尝试使用 NSUndoManager 类在我的一个应用程序中设计撤消/重做功能并看到一些设计困难。在我的应用程序中,我只有一种方法

因此,当用户在 UI 中选择一个按钮时,我将一个球对象添加到我的数组列表中。但是,我没有任何移除球的操作按钮,这是 UI 工作流程的设计,无法更改。因此,为了实现撤消,我在 addLastBall 方法中调用了以下代码

完成此操作后,当用户尝试执行撤消操作时,将使用球对象调用 removeBall 方法。现在一切都很好。但是,我现在不确定如何处理重做部分,当用户尝试重做时,我不确定会调用哪个方法,因为我需要添加用户刚刚使用撤消操作删除的球对象。任何见解都会非常有帮助。

非常感谢。

0 投票
2 回答
199 浏览

.net - 实现版本控制功能

是否有任何推荐的方法来实现业务应用程序的最终用户可以访问的版本控制功能?

目标是为用户修改业务对象(而不是文本)的应用程序创建一个健壮的版本控制系统。

我不是在为开发人员(例如 SVN、Git 等)寻找关于版本控制软件的建议,而是为最终用户公开版本控制的库或最佳实践。

理想情况下,我希望允许使用写锁定、撤消重做系统(或本地提交和恢复)等进行并发编辑。

有没有人尝试过这样的事情?是否有任何(.NET)库可以帮助解决这个问题?

0 投票
1 回答
930 浏览

vb6 - 用于增强 VB6 撤消重做功能的插件

VB6 IDE 有一个非常基本的撤消和重做机制,在此处说明

我希望它撤消更改,例如,如果我将按钮移动到某个 plave 并按 Ctrl+Z,它应该会移回之前的位置。

任何人都可以指导我使用 VB6 插件吗?

0 投票
2 回答
586 浏览

delphi - 数据输入屏幕实时更新模型对象,提供撤消和重做,使用命令模式实时更新模型对象

当您想要实现具有撤消/重做功能的模型时,经常使用众所周知的命令模式。我正在寻找一个实现撤消/重做的简单 Delphi 表单的参考实现(示例)。

据我所见,带有三个编辑框、六个备忘录框、几个组合框和其他简单编辑控件的简单 delphi 数据输入表单通常不支持撤消/重做。

有没有人见过设计良好的 delphi 方法,它使用单独的 Delphi 视图(表单)和模型对象(数据对象与表单的所有编辑同步更新,对复杂的模型-视图-控制器设计提供多级撤消/重做支持,并且验证和控制逻辑不是嵌入到表单中,也不是嵌入到模型中,而是分离出来的。

在我看来,如果您不必使用 MVC,并且您需要简单地制作一个没有模型或控制器对象的 Delphi 演示应用程序原型,那么纯简单 Delphi 的撤消/重做“one-form-is-my” -app" 设计起来会更简单,但它会变得更复杂,因为您需要记录和重放对象并将它们同步到 Delphi 表单操作,如 TEdit.OnChange。