OpenOffice BASIC, как вставить флажок на листе

Я использую OpenOffice Calc. И я пишу макросы в OpenOffice BASIC. Мне нужен правильный код, чтобы вставить флажок на листе.

теперь у меня есть

Dim Doc as Object
Doc = ThisComponent
Dim cbName As Object
cbName = "checkbox_name"

Dim oCheckBoxModel as Object

// dlg is a dialog, (don't know how to create a checkbox else)
oCheckBoxModel = dlg.getmodel().createInstance( "com.sun.star.awt.UnoControlCheckBoxModel" )
oCheckBoxModel.PositionX = 100
oCheckBoxModel.PositionY = 100
oCheckBoxModel.Width = 50
oCheckBoxModel.Height = 30
oCheckBoxModel.Label = id
oCheckBoxModel.Name = cbName
oCheckBoxModel.Enabled = True
oCheckBoxModel.TabIndex = 1
Doc.Sheets().insertByName( cbName, oCheckBoxModel ) // This line is totally wrong, but I hope it's clear what I want to do

Итак, я хочу создать флажок, а затем вставить его в лист. (В определенной ячейке или просто установив положение X и Y). Я искал в Интернете, но нашел информацию только о вставке элементов управления в диалог, а не на лист.


person user2190492    schedule 18.05.2016    source источник


Ответы (1)


Чтобы создать флажки вручную, см. здесь. Чтобы динамически создавать флажки:

Sub CreateCheckbox
  oDoc = ThisComponent
  oSheet = oDoc.Sheets.getByIndex(0)
  oDrawPage = oSheet.DrawPage  'Was oDrawPage = oDoc.getDrawPage()
  oCheckboxModel = AddNewCheckbox("Checkbox_1", "Check this box", oDoc, oDrawPage)
End Sub

Function AddNewCheckbox(sName As String, sLabel As String, _
    oDoc As Object, oDrawPage As Object) As Object
  oControlShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")
  aPoint = CreateUnoStruct("com.sun.star.awt.Point")
  aSize = CreateUnoStruct("com.sun.star.awt.Size")
  aPoint.X = 1000
  aPoint.Y = 1000
  aSize.Width = 3000
  aSize.Height = 1000
  oControlShape.setPosition(aPoint)
  oControlShape.setSize(aSize)

  oButtonModel = CreateUnoService("com.sun.star.form.component.CheckBox")
  oButtonModel.Name = sName
  oButtonModel.Label = sLabel

  oControlShape.setControl(oButtonModel)
  oDrawPage.add(oControlShape)

  AddNewCheckbox = oButtonModel
End Function

Этот код был адаптирован с сайта https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=46391.

person Jim K    schedule 20.05.2016