2016-03-05 56 views
1

我正在开发一个OpenOffice Writer模板,可用于填写儿童保健中心的报告。如何获取OpenOffice Writer组合框以显示多行文本?

有一些标准的结果,包括长句子,我希望用户能够从组合框中选择适当的句子。我在Openoffice Base数据库中将这些句子输入到一个表格中,然后将其连接到Writer模板中的一系列组合框。但是,当用户选择包含非常长的句子的选项时,只能看到组合框长度以下的文本。

我想要做的是将组合框的选定值包装在选中的几行上,这样当用户从组合框中选择一个长句时,所有(很长)文本都会出现在选定框中。

我一直在查看组合框控件的属性,但还没有找到一个允许组合框中的选定值进行自动换行(这样我可以使组合框中的多行高度,使整个句子适合框中)。

任何关于如何做到这一点的指针将不胜感激。

谢谢,

David。

回答

1

感谢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”为“无”的“打印”属性,所以,当文档打印时,组合框本身不会出现在打印的页面上,但是当我从组合框中选择一个值时,已由宏设置其值的“selectedOutcomeATextBox”文本框会显示所需的文本。我还将selectedOutcomeATextBox文本框的“TextType”属性设置为“Multi-Line”,这样超长文本将包装到下一行,从而显示存储在那里的非常长的字符串。

感谢堆吉姆K.

欢呼声,

大卫Buddrige

+0

是的,这基本上是我脑子里想的,只是我的想法是用一个列表控件,而不是一个组合框。这两者之间的区别是,组合框允许输入任何值。在这种情况下,用户可以在文本框中输入任何值,因此组合框的额外功能x给出似乎是多余的。从技术上讲,[组合框](https://en.wikipedia.org/wiki/Combo_box)只是列表控件和文本框的组合。 –

+0

请随时接受您自己的答案,因为它比我的完整得多,而且它通常是最好的可能性。如果您决定将其更改为列表控件,则可以编辑您的答案。 –

0

显然组合框没有MultiLine属性。几年前问这个问题here但没有解决。

需要一些宏编程的一种替代方法是使用单个多行text field,然后创建一个滚动条按钮来更改选项。可以使用两个按钮来改变选择(上一个/下一个),甚至是列表框控件,而不是滚动条。以这种方式使用列表框控件将具有可以一次看到所有选择的优点,如组合框。

另一种方法是分解每个句子并在列表框的几行显示部分。然后当单击一行时,使用列表框的事件监听器立即选择一个句子的所有行。除了普通的可编辑多行文本框之外,还可以显示该列表,以防列表中的任何答案都不需要。

一个更多的想法:单选按钮可以有多行,所以动态显示单选按钮,每个句子一个。可以显示一个对话窗口来保存单选按钮。对话框的结果将用于填充多行文本字段。

或者你也可以住在被截断的句子中。也许这会有助于使控制更宽一些,或缩短句子。

相关问题