2016-03-05 108 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,然後創建一個滾動條按鈕來更改選項。可以使用兩個按鈕來改變選擇(上一個/下一個),甚至是列表框控件,而不是滾動條。以這種方式使用列表框控件將具有可以一次看到所有選擇的優點,如組合框。

另一種方法是分解每個句子並在列表框的幾行顯示部分。然後當單擊一行時,使用列表框的事件監聽器立即選擇一個句子的所有行。除了普通的可編輯多行文本框之外,還可以顯示該列表,以防列表中的任何答案都不需要。

一個更多的想法:單選按鈕可以有多行,所以動態顯示單選按鈕,每個句子一個。可以顯示一個對話窗口來保存單選按鈕。對話框的結果將用於填充多行文本字段。

或者你也可以住在被截斷的句子中。也許這會有助於使控制更寬一些,或縮短句子。

相關問題