0

IOW 如何在执行宏时使 OOo 的撤消/重做正常工作?

这与我之前的问题有关:#853176

4

2 回答 2

1

您可以与 UndoManager 对话,enterUndoContext()在宏开始时调用,然后leaveUndoContext()在结束时调用。例如:

Dim undo As Object
undo = ThisComponent.UndoManager
undo.enterUndoContext("MyAtomicTest")
...
[YOUR COMPLEX OPERATIONS HERE]
...
undo.leaveUndoContext

这将创建一个原子撤消操作,对用户显示为“MyAtomicTest”。

于 2012-09-28T20:34:08.253 回答
1

对于我们当中喜欢使用 JavaScript 编写 OOo 宏的人来说,这里有一个应该可以工作的最小片段(它已经过测试,但我将这段代码从更大的上下文中分离出来):

importClass( Packages.com.sun.star.document.XUndoManager );
importClass( Packages.com.sun.star.document.XUndoManagerSupplier );
var doc           = XSCRIPTCONTEXT.getDocument();
var undo_manager  = UnoRuntime.queryInterface(XUndoManagerSupplier, doc).getUndoManager();
undo_manager.enterUndoContext( 'your descriptive title here' ); 
// get stuff done
undo_manager.leaveUndoContext(); 
于 2014-01-02T21:49:01.623 回答