Macros “如何制作宏”;原子的;
当执行宏时,如何使OOo的撤消/重做正常工作Macros “如何制作宏”;原子的;,macros,openoffice.org,atomic,Macros,Openoffice.org,Atomic,当执行宏时,如何使OOo的撤消/重做正常工作 这与我前面的问题有关:您可以与UndoManager交谈,在宏的最开始调用enterUndoContext(),然后在最后调用leaveUndoContext()。例如: Dim undo As Object undo = ThisComponent.UndoManager undo.enterUndoContext("MyAtomicTest") ... [YOUR COMPLEX OPERATIONS HERE] ... undo.leaveUn
这与我前面的问题有关:您可以与UndoManager交谈,在宏的最开始调用
enterUndoContext()
,然后在最后调用leaveUndoContext()
。例如:
Dim undo As Object
undo = ThisComponent.UndoManager
undo.enterUndoContext("MyAtomicTest")
...
[YOUR COMPLEX OPERATIONS HERE]
...
undo.leaveUndoContext
这将创建一个原子撤销操作,用户将其视为“MyAtomicTest”。对于我们这些喜欢用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();