显示简单文本框形状的 LibreOffice 宏

LibreOffice macro showing simple TextBox shape

我无法弄清楚(或找不到示例)如何在 LibreOffice Calc 6.2 中执行以下简单操作:

我在 sheet(称为 ShapeA)中有一个绘图形状(例如一个简单的矩形),在另一个 sheet(称为 TextboxB)中有一个文本框形状。我想执行以下操作:当我单击 ShapeA 时,TextboxB 必须出现在屏幕上(不更改当前 sheet,可能在对话框中),然后单击鼠标关闭。

我想与 ShapeA 关联的宏可能如下所示:

Sub Main
oDrawPage = ThisComponent.getDrawPage()
oTb = oDrawPage.getByName("TextBoxB")
oTb.show()
End Sub

有人可以建议我应该在这个宏中放入什么来完成所描述的任务吗?

更新:我想要完成的事情(回复 Jim K.)。

我有一个非常杂乱的图表,有很多形状。每个形状都有一些与之关联的文本信息。每个形状或其周围没有足够的 space 来包含此信息。所以必须有一种方法来显示关于每个形状的信息。此外,此信息应以预格式化的方式显示(它包含代码和其他结构化信息)。

我的计划是为每个图表形状创建一个包含相关信息的文本框,将这些文本框放在其他 sheet 中,并有可能在查看图表时单击任何形状并查看相关信息在不离开图表的情况下在弹出的文本框中,然后通过简单的操作(例如单击它)关闭文本框。

用 LO 的形状和宏来实现这个任务听起来可行吗?

这样怎么样:将所有内容放在同一个 sheet 但在需要时隐藏文本框。

使用以下改编自 https://ask.libreoffice.org/en/question/93050/how-can-i-hideshow-a-shape-of-my-spreadsheet-using-a-macro/ 的代码。

Sub ShapeClickedA
    ShowHideShape("TextBoxA")
End Sub
Sub ShapeClickedB
    ShowHideShape("TextBoxB")
End Sub

Sub ShowHideShape(shapeName As String)
    oDrawPage = ThisComponent.getSheets().getByName("Sheet1").getDrawPage()
    For iShape = 0 To oDrawPage.Count - 1
        oShape = oDrawPage.getByIndex(iShape)
        If oShape.Name = shapeName Then
            If oShape.Visible Then
                oShape.Visible = 0  'Not Visible
            Else
                oShape.Visible = 1  'Visible
            End If
        End If
    Next iShape
End Sub

如果您还没有设置文本框的名称,请右键单击并选择 名称... 然后右键单击 ShapeATextBoxA 并分配宏 ShapeClickedA。对其他形状对也这样做。结果是这样的:

  1. 点击任何内容之前。

  1. 点击 ShapeA。 (要再次关闭它,请单击 ShapeATextBoxA)。 ShapeB 功能类似。

  1. 也可以同时显示。