2017-04-24 2 views
1

사용자가 가능한 여러 항목 중 하나를 선택해야하는 사용자 지정 대화 상자를 만듭니다. 목록 상자를 사용하여 선택할 수있는 항목을 나열합니다.Libre Office 사용자 지정 대화 상자 표

각 행에 대해 여러 변수가 있으므로 항목을 올바르게 정렬하기 위해 표를 사용하고 싶습니다. 그렇게 할 가능성이 있습니까?

내가 무엇을 가지고 :

abcdefg hijkl  mnopq 
abcd  efghilkl mno 

답변

0

는 고정 폭 목록 상자에 대한 글꼴, 패드 공백 문자열을 사용하여 내가 원하는 무엇

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에 있습니다.

0

예, 가능합니다.

새 대화 상자를 만들고 아래쪽에 레이블을 추가하십시오. 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을 실행하여 다음 코드를 새 모듈을 만들고 추가 당신은 표를 얻어야합니다 :

enter image description here

관련 문제