如何让 OpenOffice Writer 组合框显示多行文本?
How do I get OpenOffice Writer Combo boxes to display multi-line text?
我正在开发一个 OpenOffice Writer 模板,可用于为托儿中心填写报告。
有一些标准结果,包括长句,我希望用户能够 select 从组合框中选择合适的句子。我已经将句子输入到 Openoffice Base 数据库中的 table 中,然后将其连接到 Writer 模板中的一系列组合框。但是,当用户选择一个包含很长句子的选项时,只能看到组合框长度的文本。
我想要做的是在 selected 时将组合框的 selected 值换行多行,以便所有(很长的)文本都出现在 select当用户从组合中选择一个长句时出现框。
我一直在查看组合框控件的属性,但尚未确定允许组合框中的 selected 值自动换行的属性(这样我就可以使组合框几行的高度,使整个句子都适合该框)。
任何关于我如何做到这一点的指示都将不胜感激。
谢谢,
大卫.
显然组合框没有 MultiLine attribute. The question was asked a few years ago here 但没有解决。
需要一些宏编程的一种替代方法是使用单个多行 text field,然后制作一个滚动条按钮来更改选择。代替滚动条,可以使用两个按钮来更改选择(上一个/下一个),甚至一个列表框控件。以这种方式使用列表框控件的好处是,他们可以一次看到所有选项,就像组合框一样。
另一种方法是拆分每个句子并将各个部分显示在列表框的多行中。然后,当单击一行时,将使用列表框的事件侦听器一次选择一个句子的所有行。这可以在普通的可编辑多行文本框之外显示,以防需要列表中的 none 个答案。
还有一个想法:单选按钮可以有多行,所以动态显示单选按钮,一个句子一个。可以显示一个对话框 window 来容纳单选按钮。对话框的结果将用于填充多行文本字段。
或者您可以接受截断的句子。把控件放宽一点,或者把句子缩写一下,也许会有所帮助。
谢谢 Jim K,这很有帮助。最后,我最终做的是在名为 "OutcomeCombo".
的组合框下方创建一个名为 "selectedOutcomeATextBox" 的文本框
然后我将以下宏代码附加到与 "selectedOutcomeATextBox" 关联的 textModified 事件:
Sub UpdateOutcomeA
Dim Doc As Object
Dim Form As Object
Dim Ctl As Object
Dim newCtl as Object
Doc = ThisComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("OutcomeCombo")
newCtl = Form.getByName("selectedOutcomeATextBox")
newCtl.Text = Ctl.Text
End Sub
我还把"OutcomeCombo"的"Printable"属性设置为"No",这样在文档打印的时候,组合框本身就不会出现在打印出来的页面,但是当我从组合框中选择一个值时,宏设置了其值的 "selectedOutcomeATextBox" 文本框确实出现了所需的文本。我还将 selectedOutcomeATextBox" 文本框的 "TextType" 属性 设置为 "Multi-Line",以便超长文本将换行到下一行,从而显示存储在那里的非常长的字符串。
多谢 Jim K。
干杯,
大卫·布德里奇
我正在开发一个 OpenOffice Writer 模板,可用于为托儿中心填写报告。
有一些标准结果,包括长句,我希望用户能够 select 从组合框中选择合适的句子。我已经将句子输入到 Openoffice Base 数据库中的 table 中,然后将其连接到 Writer 模板中的一系列组合框。但是,当用户选择一个包含很长句子的选项时,只能看到组合框长度的文本。
我想要做的是在 selected 时将组合框的 selected 值换行多行,以便所有(很长的)文本都出现在 select当用户从组合中选择一个长句时出现框。
我一直在查看组合框控件的属性,但尚未确定允许组合框中的 selected 值自动换行的属性(这样我就可以使组合框几行的高度,使整个句子都适合该框)。
任何关于我如何做到这一点的指示都将不胜感激。
谢谢,
大卫.
显然组合框没有 MultiLine attribute. The question was asked a few years ago here 但没有解决。
需要一些宏编程的一种替代方法是使用单个多行 text field,然后制作一个滚动条按钮来更改选择。代替滚动条,可以使用两个按钮来更改选择(上一个/下一个),甚至一个列表框控件。以这种方式使用列表框控件的好处是,他们可以一次看到所有选项,就像组合框一样。
另一种方法是拆分每个句子并将各个部分显示在列表框的多行中。然后,当单击一行时,将使用列表框的事件侦听器一次选择一个句子的所有行。这可以在普通的可编辑多行文本框之外显示,以防需要列表中的 none 个答案。
还有一个想法:单选按钮可以有多行,所以动态显示单选按钮,一个句子一个。可以显示一个对话框 window 来容纳单选按钮。对话框的结果将用于填充多行文本字段。
或者您可以接受截断的句子。把控件放宽一点,或者把句子缩写一下,也许会有所帮助。
谢谢 Jim K,这很有帮助。最后,我最终做的是在名为 "OutcomeCombo".
的组合框下方创建一个名为 "selectedOutcomeATextBox" 的文本框然后我将以下宏代码附加到与 "selectedOutcomeATextBox" 关联的 textModified 事件:
Sub UpdateOutcomeA
Dim Doc As Object
Dim Form As Object
Dim Ctl As Object
Dim newCtl as Object
Doc = ThisComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("OutcomeCombo")
newCtl = Form.getByName("selectedOutcomeATextBox")
newCtl.Text = Ctl.Text
End Sub
我还把"OutcomeCombo"的"Printable"属性设置为"No",这样在文档打印的时候,组合框本身就不会出现在打印出来的页面,但是当我从组合框中选择一个值时,宏设置了其值的 "selectedOutcomeATextBox" 文本框确实出现了所需的文本。我还将 selectedOutcomeATextBox" 文本框的 "TextType" 属性 设置为 "Multi-Line",以便超长文本将换行到下一行,从而显示存储在那里的非常长的字符串。
多谢 Jim K。
干杯,
大卫·布德里奇