我不知道如何使用事务数据库实现用户友好界面的撤销属性.
一方面,建议用户拥有,因为它是说多(无限)撤销的可能性在这里的答案.可能有助于此问题的模式是Memento 或Command.
但是,使用包含触发器,不断增长的序列号和不可逆转的过程的复杂数据库,很难想象撤消操作如何在不同于事务边界的点处起作用.换句话说,撤消到最后一次提交的事务只是回滚时,但是如何回到不同的时刻呢?
更新(基于到目前为止的答案):我不一定希望撤消在修改已经提交时有效,我将专注于具有开放事务的正在运行的应用程序.每当用户点击保存时,它意味着提交,但在保存之前 - 在同一事务期间 - 撤消应该有效.我知道使用数据库作为持久层只是一个实现细节,用户不应该为此烦恼.但是,如果我们认为"在数据库和GUI中撤消的想法是根本不同的东西",并且我们不对数据库使用撤销,那么无限撤消只是一个流行语.我知道"回滚是......不是用户撤消".
那么如何在同一个事务中给出"由于任何更改而产生的级联效果",实现客户端级撤销?
嗨,我创建了一个javascript函数来检查所选模块的数量是否大于给定值.因此,每次调用一个复选框时,都会调用该函数,该函数会遍历所有复选框并计算总数以查看它是否更大.但问题是当用户选中复选框并且总信用额大于该值时,我想将复选框设置为checked = false.但我没有撤消哪个复选框.在javascript中有任何撤消最终点击功能吗?
我正在学习撤消,我想要一种方法来查看撤消对象NSInvocation,undoManager以便我可以看到正在发生的事情.我在文档中看不到这样的东西,但也许有人知道一种方式.
谢谢.
我使用Qt 4.5,并C++在Windows XP上.
基本上我将有一个UI,用户将输入一些数据.他可以去修改UI中可用的值.UI将具有基本的Qt UI元素,如QLineEdit,QTableWidget等等,
所以现在,如果用户按下Undo按钮(或Ctrl+Z),则应在相应的UI元素中保留先前的值.
比方说,如果有QLineEdit文本25.现在用户修改为30.现在通过单击撤消,应保留旧值25.
与通常在许多应用程序中可用的撤消功能类似.有什么办法吗?
我有一个主从布局,其中有一部分弹出菜单(“详细信息”)和一个有DataGridView的部分,其中包含行。
当DataGridView中的选定行更改时,弹出菜单状态将更新,而当弹出菜单更改时,DGV的选定行中的状态应更新。
当我更改弹出菜单的值时,除了 DataGridView中的行不会立即更新之外,所有这些工作均有效。我必须选择其他行才能查看我的修改。
我认为这是因为直到选择更改,才提交编辑。
我的问题是:如何使对弹出窗口的更改立即反映在DataGridView中?
我已经尝试过在弹出菜单的SelectionChangeCommitted处理程序中调用EndEdit(),但这没有任何效果。我对允许我创建一个DataGridView的技术感兴趣,该DataGridView的行为就像没有开始的撤消机制一样。理想情况下,该解决方案应该是通用的,并且可以移植到其他项目中。
是否有机会撤消最后一个被调用函数的执行.例如,我点击一个
<nav><a href="foo">...</a></nav>
Run Code Online (Sandbox Code Playgroud)
它有一个onclick-listener,类似的东西:
$(function() {
$('nav a').on('click', function() {
$('nav a').removeClass('active');
$(this).addClass('active');
$($(this).attr('href')).addClass('active');
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
我正在寻找能够撤消最后一个函数执行的东西.有什么建议吗?谢谢!!!:)
我正在尝试使用django-reversion在django项目中实现"撤消"功能,以防用户意外修改多个对象.使用管理面板将无法正常工作,因为必须逐个还原对象.
我的问题是我无法创建包含多个对象数据的修订版.
即使我这样做
with reversion.create_revision():
Res.object.all().delete()
Run Code Online (Sandbox Code Playgroud)
然后我无法访问将此更改分组的修订版.它分为"one object one revision.models.Version"方式.
In [103]: reversion.models.Version.objects.all()
Out[103]: [<Version: #00001>, <Version: #00002>]
Run Code Online (Sandbox Code Playgroud)
我也试过了
reversion.models.Revision.objects.all().order_by('-date_created')[0].version_set.all()
Run Code Online (Sandbox Code Playgroud)
但它也只为一个已删除的Res对象返回了一个版本.好像我错过了什么.
假设我有一串字
txt = "The licenses for most software"
length(txt)
1
Run Code Online (Sandbox Code Playgroud)
我可以使用strsplit将其拆分为复合词
t = unlist(strsplit(txt, split=" "))
length(t)
5
Run Code Online (Sandbox Code Playgroud)
现在我想撤消我所做的事情。如何将5个单词重新连接到原始字符串中?
谢谢
我输入了一个使用Canvas的程序.
它提供了一个弹出菜单,提供3个绘图工具作为选项:
划伤屏幕时画线
根据屏幕上的起点和终点绘制线条
画一个圆圈
此外,还有以下选项:
明确
解开
在线上执行撤消时,根本不存在任何问题,因为两者都基于路径.(用途List<Path>).但是这里开始出现问题.使用Point对象绘制圆.所以问题是:
我希望我很清楚.[Downvoters,如果被吸引,被要求输入原因,以指导这个初学者,一个通常的downvotes受害者,不知道改进的确切原因].
下面分享的代码(很复杂).我尝试将一个类专门用于每个绘图工具(直线,圆) - 它工作 - 除了 - 它没有在画布上绘制任何东西.所以,所有人都回来了.
码:
package com.example.orbit_.undofortouch;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
Button b1, b2, b3;
PopupMenu …Run Code Online (Sandbox Code Playgroud) 我只是想在Matlab上提出一个非常基本的问题,在使用Matlab时经常会遇到麻烦.
我偶尔会在使用Matlab时删除一些代码; 但是,似乎没有办法撤消删除或从我的代码中恢复这些块.
删除代码是否有撤消按钮或快捷方式?
如果我不记得那些大块并再次写作,这并不是什么大不了的事,但这似乎是一项繁琐的工作.