我创建了一个OpenOffice Calc电子表格,并在其中插入了一个按钮。我可以用按钮成功调用一个宏。当我将鼠标悬停在按钮上时,我想要一个光标指针。
首先,我转而去设计'模式,然后我右键单击我的按钮,并使用出现的弹出菜单,我选择了'事件'标签。然后我点击了里面的鼠标'点点圆点按钮。在“分配操作”中#39;弹出的窗口,我点击了' Macro ..'按钮。然后我得到了“宏选择器”#39;弹出窗口,我选择了OpenOffice宏'左侧窗格中的文件夹。我扩展了工具'' ModuleControls'来自那个'图书馆'窗格然后选择' SwitchMousePointer'从右侧'宏名称'窗格,然后点击'确定' '确定'的按钮。
但现在当我将鼠标光标悬停在我的按钮上时,我弹出一个OpenOffice Error窗口"运行基本脚本Tools.ModuleControls.SwitchMousePointer时发生了脚本框架错误。"
我的OO经验很少,但我没有在这里或OO论坛网站上找到我想要的东西。我非常感谢能得到一些帮助,谢谢,尼日。
答案 0 :(得分:0)
SwitchMousePointer需要属性(oWindowPeer为Object,bDoEnable为Boolean)。所以你不能简单地将它分配给一个事件。它不会做你想的那样。
您应该更好地编写自己的Sub来更改指针。此外,没有必要在每个鼠标事件上执行此操作。例如,它应该在工作表激活时执行一次。
有关OpenOffice.org BASIC编程的介绍,请参阅https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide。如果要编写自己的BASIC宏,则需要一个调试工具。因此,请特别注意:https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/UNO_Tools
假设在工作表上有一个名为&#34的按钮;按钮1"然后:
Sub ChangeMousePointer
oController = ThisComponent.CurrentController
oButtonModel = oController.ActiveSheet.DrawPage.Forms(0).getByName("Push Button 1")
oButtonControl = oController.getControl(oButtonModel)
oWindowPointer = CreateUnoService("com.sun.star.awt.Pointer")
oWindowPointer.SetType(com.sun.star.awt.SystemPointer.HAND)
oButtonControl.Peer.setPointer(oWindowPointer)
End Sub
并将其分配给工作表事件激活文档。 右键单击工作表选项卡,然后从上下文菜单中选择工作表事件。然后:
如果且仅当按钮位于表格(0)上时,则在打开文档时不会发生工作表事件激活文档,此工作表位于前面。在这种情况下,我们还必须在文档事件Open Document上调用Sub ChangeMousePointer。
Sub Document_Open
oController = ThisComponent.CurrentController
oSheet = oController.ActiveSheet
if oSheet.Name = ThisComponent.Sheets(0).Name then
if oController.ActiveSheet.DrawPage.Forms.Count > 0 then
if oController.ActiveSheet.DrawPage.Forms(0).hasByName("Push Button 1") then
call ChangeMousePointer
end if
end if
end if
End Sub
将宏指定给文档事件打开文档从菜单中选择工具 - 自定义,然后: