2016-03-05 3 views
1

Я разрабатываю шаблон OpenOffice Writer, который можно использовать для заполнения отчетов для детского центра.Как получить поля OpenOffice Writer Combo для отображения многострочного текста?

Есть несколько стандартных результатов, содержащих длинные предложения, и я хочу, чтобы пользователь мог выбрать подходящее предложение из поля со списком. Я ввел предложения в таблицу в базе данных Openoffice Base, которая затем подключается к серии комбинированных полей в шаблоне Writer. Однако, когда пользователь выбирает вариант, который содержит очень длинное предложение, отображается только текст до длины поля со списком.

Что я хочу сделать, это иметь выбранное значение комбинации со списком в нескольких строках при выборе так, чтобы весь (очень длинный) текст отображался в выбранном поле, когда пользователь выбирает длинное предложение из комбо.

Я просматривал свойства элемента управления со списком, но еще не определил тот, который позволит выделенному значению в поле со списком словосочетать (чтобы я мог сделать поле со списком нескольких строк в такой, чтобы все предложение входило в коробку).

Любые указатели на то, как я мог это сделать, были бы очень благодарны.

спасибо,

David.

ответ

1

Спасибо Джим К, это было полезно. В конце концов, то, что я закончил, создало текстовое поле, которое я назвал «selectedOutcomeATextBox» сразу же под моим полем со списком, которое было названо «OutcomeCombo».

Затем я прикрепил следующий код макроса к событию textModified, связанный с «selectedOutcomeATextBox»:

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», которое имеет значение, заданное макросом при выборе значения из поля со списком, появляется с нужным текстом.Я также установил для свойства TextType для выбранного текстового поля SelectedTextBox значение «Multi-Line», так что дополнительный длинный текст будет перенесен на следующую строку, тем самым показывая очень длинные строки, которые там хранятся.

Спасибо, кучи Джим К.

веселит,

Дэвид Buddrige

+0

Да, это в основном то, что я имел в виду, кроме моя идея заключается в использовании элемента управления списком вместо поля со списком. разница между ними состоит в том, что combo boxes позволяют вводить любое значение. В этом случае пользователь может ввести любое значение в текстовое поле, поэтому дополнительные функции, которые комбинируют bo x дает избыточность. Технически, [combo box] (https://en.wikipedia.org/wiki/Combo_box) представляет собой просто комбинацию элемента управления списком и текстового поля. –

+0

Не стесняйтесь принимать свой собственный ответ, так как он намного более совершенен, чем мой, и это, как правило, лучшие из возможностей. Если вы решите изменить его на элемент управления списком, вы можете отредактировать свой ответ. –

0

По-видимому, поля со списком не имеют атрибута MultiLine. Вопрос был задан несколько лет назад here, но не был решен.

Один из вариантов, который требует некоторого макропрограммирования, - использовать одну многострочную линию text field, а затем создать кнопку полосы прокрутки, которая изменит выбор. Вместо полосы прокрутки можно использовать две кнопки для изменения выбора (предыдущий/следующий) или даже элемент управления списком. Использование элемента управления списком таким образом имело бы то преимущество, что они могли видеть все варианты сразу, как поле со списком.

Другой подход состоит в том, чтобы разбить каждое предложение и отобразить части на нескольких строках списка. Затем при нажатии одной строки все строки предложения выбираются сразу, используя прослушиватель событий для списка. Это может быть показано в дополнение к обычному редактируемому многострочному текстовому полю, если ни один из ответов в списке не нужен.

Еще одна идея: радио кнопки могут иметь несколько линий, поэтому динамически показывают переключатели, по одному для каждого предложения. Диалоговое окно можно отобразить, чтобы удерживать радиокнопки. Результат диалога будет использоваться для заполнения многострочного текстового поля.

Или вы можете просто жить с укороченными предложениями. Возможно, это помогло бы сделать контроль немного шире или сокращать предложения.