【问题标题】:LibreOffice macro showing simple TextBox shapeLibreOffice 宏显示简单的 TextBox 形状
【发布时间】:2020-04-22 18:08:56
【问题描述】:

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

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

我猜想与 ShapeA 相关的宏可能看起来像这样:

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

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

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

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

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

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

【问题讨论】:

  • 您要这样做以便可以编辑文本吗?如果是这样,您可以显示一个对话框,其中包含另一个文本框中的文本,当对话框关闭时,更新另一个工作表上的文本框。或者,也许您想将形状剪切并粘贴到当前工作表,然后在宏完成时将其移回另一张工作表。也许这有助于更多地了解总体目标,因为您的问题听起来自相矛盾 - 在不显示工作表的情况下显示工作表上的形状似乎是不可能的。
  • 您好 Jim K,感谢您的评论。我更新了问题。请检查附加信息。
  • 附加信息很有帮助;谢谢。

标签: libreoffice libreoffice-basic


【解决方案1】:

如何:将所有内容放在同一张纸上,但在需要时隐藏文本框。

使用以下改编自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

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

  1. 在点击任何内容之前。

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

  1. 也可以同时显示两者。

【讨论】:

  • 您的变体更好,因为它允许在不离开主图的情况下编辑文本框。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2012-06-04
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
相关资源
最近更新 更多