Сделано так:
Создан диалог на нём существует комбобокс с именем "NewPerson" и кнопкой "AddPerson" к которой привязан макрос.
Кусочек текста макроса, которым пытался создать управление комбобоксом:
Код:
oDlgM = oDlgModel.createInstance("com.sun.star.awt.UnoControlComboBoxModel")
oDlgM.setPropertyValue("Name", "NewOrgPers")
oDlgM.setPropertyValue("TabIndex", 23)
oDlgM.setPropertyValue("FontDescriptor", ButtonFont)
oDlgM.setPropertyValue("MaxTextLen", 60)
oName2 = oDlg.getControl("NewOrgPers").getText()
oName2.addItems("Вася", 1, "Пупкин", 2)
Прежде чем украшать комбобокс бантиками и рюшечками (FontDescriptor и др.), нужно:
1. задать размеры и координаты:
oDlgM.setPropertyValue("Height",100)
oDlgM.setPropertyValue("Width",50)
2. вставить комбобокс в модель диалога:
oDlgModel.insertByName("NewOrgPers",oDlgM)
3. кроме того есть такие важные свойства как раскрываемый или нет и если да, то на сколько строк
Не понимаю, как создать массив для комбобокса и получить значение выбранного поля.
Список (вставляется массивом при создании комбобокса):
oDlgM.setPropertyValue("StringItemList",Array("Вася","1","Пупкин","2","пятая строка"))
Поштучное добавление в список (только одна строка и её позиция за один раз):
oName2=oDlg.getControl("NewOrgPers")
oName2.addItem("одна строка",2)
oName2.addItem("ещё одна строка",0)
Достаточно ли привязанного макроса или создавать слушателя для кнопки "AddPerson"?
Это зависит от того, что нужно сделать.
Для добавления введённого текста в список при нажатии на кнопку, макрос получает свойство "text" и выполняет метод "addItem("строка",позиция)