0

Я использую OpenOffice Calc. И я пишу макрос в OpenOffice BASIC. Мне нужен правильный код, чтобы вставить флажок в листе.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). Я искал в Интернете, но я только нахожу информацию о вставке элементов управления в диалог, а не в лист

ответ

1

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

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.

Смежные вопросы