사용자가 가능한 여러 항목 중 하나를 선택해야하는 사용자 지정 대화 상자를 만듭니다. 목록 상자를 사용하여 선택할 수있는 항목을 나열합니다.Libre Office 사용자 지정 대화 상자 표
각 행에 대해 여러 변수가 있으므로 항목을 올바르게 정렬하기 위해 표를 사용하고 싶습니다. 그렇게 할 가능성이 있습니까?
내가 무엇을 가지고 :
abcdefg hijkl mnopq
abcd efghilkl mno
사용자가 가능한 여러 항목 중 하나를 선택해야하는 사용자 지정 대화 상자를 만듭니다. 목록 상자를 사용하여 선택할 수있는 항목을 나열합니다.Libre Office 사용자 지정 대화 상자 표
각 행에 대해 여러 변수가 있으므로 항목을 올바르게 정렬하기 위해 표를 사용하고 싶습니다. 그렇게 할 가능성이 있습니까?
내가 무엇을 가지고 :
abcdefg hijkl mnopq
abcd efghilkl mno
는 고정 폭 목록 상자에 대한 글꼴, 패드 공백 문자열을 사용하여 내가 원하는 무엇
abcdefg hijkl mnopq
abcd efghijk lmno
. 그 모든이 LibreOffice와 기본 작동하지만 기본에 패드 문자열에
Sub PaddedListboxItems
oListBox.addItems(Array(
PaddedItem(Array("abcdefg", "hijkl", "mnopq")),
PaddedItem(Array("abcd", "efghijk", "lmno"))), 0)
End Sub
Function PaddedItem(item_strings As Array)
PaddedItem = PadString(item_strings(0), 10) & _
PadString(item_strings(1), 11) & item_strings(2)
End Function
Function PadString(strSource As String, lPadLen As Long)
PadString = strSource & " "
If Len(strSource) < lPadLen Then
PadString = strSource & Space(lPadLen - Len(strSource))
End If
End Function
더 많은 방법, http://www.tek-tips.com/viewthread.cfm?qid=522164에 있습니다.
예, 가능합니다.
새 대화 상자를 만들고 아래쪽에 레이블을 추가하십시오. grid_selectionChanged
이벤트에 대한 리스너를 추가
Option Explicit
Option Base 0
Dim oDialog1 As Object, oDataModel As Object, oListener As Object
Sub OpenDialog()
Dim oGrid As Object, oGridModel As Object, oColumnModel As Object, oCol As Object
Dim oLabel1 As Object, rect(3) As Integer
DialogLibraries.LoadLibrary("Standard")
oDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oGridModel = oDialog1.getModel().createInstance("com.sun.star.awt.grid.UnoControlGridModel")
oLabel1 = oDialog1.getModel().getByName("Label1")
rect(0) = oLabel1.getPropertyValue("PositionX")
rect(1) = 10
rect(2) = oLabel1.getPropertyValue("Width")
rect(3) = oLabel1.getPropertyValue("PositionY") - 2*rect(1)
With oGridModel
.PositionX = rect(0)
.PositionY = rect(1)
.Width = rect(2)
.Height = rect(3)
End With
oColumnModel = oGridModel.ColumnModel
oCol = oColumnModel.createColumn()
oCol.Title = "Column 1"
oColumnModel.addColumn(oCol)
oCol = oColumnModel.createColumn()
oCol.Title = "Column 2"
oColumnModel.addColumn(oCol)
oCol = oColumnModel.createColumn()
oCol.Title = "Column 3"
oColumnModel.addColumn(oCol)
oDialog1.getModel().insertByName("grid", oGridModel)
oGrid = oDialog1.getControl("grid")
oListener = (CreateUnoListener("grid_", "com.sun.star.awt.grid.XGridSelectionListener"))
oGrid.addSelectionListener(oListener)
oDataModel = oGridModel.GridDataModel
oDataModel.addRow("a", Array("abcdefg", "hijkl", "mnopq"))
oDataModel.addRow("b", Array("abcd", "efghijk", "lmno"))
oDialog1.execute()
oDialog1.dispose()
End Sub
선택한 행의 값을 얻으려면 :
Sub grid_selectionChanged(ev)
Dim oRows() As Object, oLabel1 As Object, sCells(2) As String
oRows = ev.Source.getSelectedRows()
oLabel1 = oDialog1.getModel().getByName("Label1")
sCells(0) = oDataModel.getRowData(oRows(0))(0)
sCells(1) = oDataModel.getRowData(oRows(0))(1)
sCells(2) = oDataModel.getRowData(oRows(0))(2)
oLabel1.setPropertyValue("Label", "Selected values: " + sCells(0) + "," + sCells(1) + "," + sCells(2))
End Sub
을 모든 올바르게했다면, OpenDialog
을 실행하여 다음 코드를 새 모듈을 만들고 추가 당신은 표를 얻어야합니다 :