gpt4 book ai didi

delphi - 如何实现多次Undo/Redo?

转载 作者:行者123 更新时间:2023-12-03 01:04:51 25 4
gpt4 key购买 nike

我有一个带有 4 个编辑框和一个备忘录的表单,我正在尝试弄清楚如何实现多个撤消重做,例如 -

因此,如果用户在编辑 3,1,2、备忘录中输入文本,然后编辑 4,我想按反转顺序撤消,并按原始顺序重做。

但是我不太确定如何跟踪订单。对此的任何帮助将不胜感激

我使用的是Delphi 7

最佳答案

最简单的方法是捕获对任何包含的控件的任何更改,并一起记下所有 4 个控件的状态(内容、选择、插入符位置)。对每个更改都执行此操作,您就会有一个撤消堆栈。现在,当您需要撤消操作时,您可以将所有控件恢复到保存的状态。

此方案可能非常消耗资源,一旦实现,您可能希望通过仅保存差异或在特定控件上完成的最后操作来优化它。问题是

(a) 标准编辑/备忘录不会为您提供有关具体更改内容的信息,因此您需要以某种方式计算更改(例如,通过将其与之前记录的状态进行比较,但这意味着您需要从初始状态“重建”内容并完成所有更改,然后将 current-1 状态与当前状态进行比较以找出更改,

(b) 标准控件自行处理撤消操作,用户可以恢复一个控件,从而破坏撤消堆栈的顺序。

也许您可以使用一些第三方编辑/备忘录控件,它们会更能满足您的需求,并让您控制撤消/重做操作。例如,我曾经为ElPack(现在由LMD Innovative拥有的LMD ElPack)创建了TElEdit控件,并且该控件在其他功能中具有撤消/重做堆栈,并且我知道TElEdit如何帮助您对其源代码进行轻微修改。您可能想检查 TElEdit 或其他类似组件,看看它们能为您提供什么。

关于delphi - 如何实现多次Undo/Redo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11293360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com