libreoffice - 显示简单 TextBox 形状的 LibreOffice 宏
问题描述
我无法弄清楚(或找到示例)如何在 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 的形状和宏来实现这个任务听起来可行吗?
解决方案
怎么样:将所有内容放在同一张纸上,但在需要时隐藏文本框。
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
如果您还没有,请通过右键单击并选择名称来设置文本框的名称...然后右键单击两者ShapeA
并TextBoxA
分配宏ShapeClickedA
。对其他形状对也这样做。结果是这样的:
- 在单击任何内容之前。
- 点击
ShapeA
。(要再次关闭它,请单击ShapeA
或TextBoxA
)。ShapeB
功能类似。
- 也可以同时显示两者。
推荐阅读
- go - 与测试一起使用时方法无法访问的全局变量
- ios - 我将如何在 iOS 中制作可拖动的自定义形状瓷砖网格?
- ionic2 - 我们可以在不使用 ionic 3 中的循环的情况下为变量分配除 1 或任何其他整数之外的数字值吗
- sql - Oracle如何选择具有自定义名称的列
- c++ - 在opengl中通过多个渲染目标从自己的帧缓冲区读取输出值不起作用
- azure - 替换 Azure Web 应用中所有 .config 文件中的令牌
- css - Font Awesome 5 在伪元素中选择正确的字体系列
- python - Python替换任何以'lat'开头的单词
- qt - 如何从 Qtreeview 使复选框可点击
- javascript - 如何在 Highcharts 图表上绑定键盘“输入”键