openoffice calc button鼠标悬停在事件光标变化上

时间:2014-11-10 21:49:29

标签: macros openoffice-calc

我创建了一个OpenOffice Calc电子表格,并在其中插入了一个按钮。我可以用按钮成功调用一个宏。当我将鼠标悬停在按钮上时,我想要一个光标指针。

首先,我转而去设计'模式,然后我右键单击我的按钮,并使用出现的弹出菜单,我选择了'事件'标签。然后我点击了里面的鼠标'点点圆点按钮。在“分配操作”中#39;弹出的窗口,我点击了' Macro ..'按钮。然后我得到了“宏选择器”#39;弹出窗口,我选择了OpenOffice宏'左侧窗格中的文件夹。我扩展了工具'' ModuleControls'来自那个'图书馆'窗格然后选择' SwitchMousePointer'从右侧'宏名称'窗格,然后点击'确定' '确定'的按钮。

但现在当我将鼠标光标悬停在我的按钮上时,我弹出一个OpenOffice Error窗口"运行基本脚本Tools.ModuleControls.SwitchMousePointer时发生了脚本框架错误。"

我的OO经验很少,但我没有在这里或OO论坛网站上找到我想要的东西。我非常感谢能得到一些帮助,谢谢,尼日。

1 个答案:

答案 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

并将其分配给工作表事件激活文档。 右键单击工作表选项卡,然后从上下文菜单中选择工作表事件。然后: enter image description here

如果且仅当按钮位于表格(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

将宏指定给文档事件打开文档从菜单中选择工具 - 自定义,然后: enter image description here