リストボックス 
複数の項目からひとつを選ばせるまたは、複数を選ぶことができるリストボックス。
モデル 
モデルオブジェクト
共通プロパティ 
他のコントロールと共通のプロパティは次のものです。
項目 
プロパティ | 型 | 説明 |
StringItemList | <sequence>string | リストの項目。 |
MultiSelection | boolean | 複数選択可能にする。 |
SelectedItems | <sequence>string | 選択されているリストの項目位置("0" 基準)。 |
ReadOnly | boolean | 読み込み専用にする。読み取り専用にすると項目が選択できない。 |
ドロップダウン 
プロパティ | 型 | 説明 |
Dropdown | boolean | ドロップダウンを有効にする。有効にするとドロップダウンのボタンが表示されるが、単一行しか項目が表示されない。 |
LineCount | integer | ドロップダウン利用時に表示される項目数。 |
モデルでの操作 
モデルオブジェクトでの操作。コントローラオブジェクトが利用できる場合にはリストの操作はそちらの方が便利です。フォームなどモデルしか利用できない場合に利用します。
フォームでもコントロールのコントローラにアクセスして利用できます。
モデルを介して行なった場合にはイベントが発生しませんが、コントローラを介して行うと、ユーザーが GUI から操作したのと同じようにイベントが発生します。
リストの項目の操作は、基本的に自分で配列を操作することで行います。
全ての項目を取得 
Sub GetItems( oListBox As Object )
GetItems = oListBox.StringItemList
End Sub
項目数を取得する 
項目数を取得します。
Function GetItemCount( oListBox As Object ) As Integer
n = UBound(oListBox.StringItemList)
GetItemCount = n + 1
End Function
リストを設定する 
リストの項目を変更します。
Sub Btn1_Push( oEv As Object )
oForm = oEv.Source.Model.Parent
oListBox = oForm.getByName("ListBox1")
sData = Array("みかん", "りんご", "柿", "西瓜")
'oListBox.StringItemList = sData
SetItems( oListBox, sData )
End Sub
Sub SetItems( oListBox As Object, sItems )
oListBox.StringItemList = sItems
End Sub
項目を追加する 
指定位置に項目を追加します。
Sub AddItem( _
oList As Object, sItem As String, nIndex As Integer )
sItems = oListBox.StringItemList
InsertItem( sItems, sItem, nIndex )
oList.StringItemList = sItems
End Sub
Sub InsertItem( sItems, sItem As String, nIndex As Integer )
n = UBound(sItems)
If nIndex > n Then nIndex = n
ReDim Preserve sItems(n+1)
For i = n+1 To nIndex +1 Step -1
sItems(i) = sItems(i - 1)
Next
sItems(nIndex) = sItem
End Sub
複数項目を追加する 
複数項目を一度に指定位置に挿入します。
Sub AddItems( _
oList As Object, sAddItems As String, nIndex As Integer )
sItems = oListBox.StringItemList
InsertItems( sItems, sAddItems, nIndex )
oList.StringItemList = sItems
End Sub
Sub InsertItems( sItems, sAddItems, nIndex )
n = UBound(sItems)
If nIndex > n Then nIndex = n
m = UBOund(sAddItems)
ReDim Preserve sItems(n+m +1)
For i = n+m +1 To nIndex +m+1 Step -1
sItems(i) = sItems(i - m -1)
Next
For i = 0 To m Step 1
sItems(nIndex + i) = sAddItems(i)
Next
End Sub
項目を取得する 
指定した位置の項目を取得します。
Function GetItem( oList As Object, nIndex As Integer ) As String
Dim sItem As String
sItems = oList.StringItemList
n = UBound(sItems)
If nIndex < n Then
sItem = sItems(nIndex)
End If
GetItem = sItem
End Function
選択する 
Sub Btn2_Push( oEv As Object )
oForm = oEv.Source.Model.Parent
oListBox = oForm.getByName("ListBox1")
sSelected = Array(1,3)
oListBox.SelectedItems = sSelected
End Sub
存在しない項目のインデックスでもエラーが出ません。
Sub SelectItemsPos( oListBox As Object, nSelect )
oListBox.SelectedItems = nSelect
End Sub
選択中の項目のインデックスを取得 
選択中の項目のインデックスを配列として取得します。
Function SelectedItemsPos( oListBox As Object)
SelectedItemsPos = oListBox.SelectedItems
End Function
選択中の項目を取得 
選択中の項目を配列として取得します。
Function SelectedItems( oListBox As Object)
nSelected = oListBox.SelectedItems
n = UBound(nSelected)
If n > -1 Then
Dim sSelectedItems(n) As String
sItems = oListBox.StringItemList
For i = 0 to n step 1
sSelectedItems(i) = sItems( nSelected(i) )
Next
Else
Dim sSelectedItems() As String
End If
SelectedItems = sSelectedItems
End Function
コントロール 
コントロールオブジェクト
DropDownLineCount | short | ドロップダウン数 |
ItemCount | short | アイテム数 |
Items | []string | アイテム |
SelectedItem | string | 選択中アイテム |
SelectedItemPos | short | 選択中アイテム位置 |
SelectedItems | []string | 複数選択中アイテム |
SelectedItemsPos | []short | 複数選択中アイテム位置 |
MultipleMode | boolean | 複数選択モード |
- void addItem ( [in] string aItem, [in] short nPos )
- void addItems ( [in] []string aItems, [in] short nPos )
- void removeItems( [in] short nPos, [in] short nCount )
- string getItem ( [in] short nPos )
- short getItemCount ()
- []string getItems ()
- string getSelectedItem ()
- short getSelectedItemPos ()
- []string getSelectedItems ()
- []short getSelectedItemsPos ()
- selectItem ( [in] string aItem, [in] boolean bSelect )
- selectItemPos ( [in] short nPos, [in] boolean bSelect )
- selectItemsPos ( [in] []short aPositions, [in] boolean bSelect )
- void setMultipleMode ( [in] boolean bMulti )
- boolean isMutipleMode ()
css.awt.XItemList インターフェース 
OOo 3.3 から利用できるモデル用のインターフェースです。モデルから項目の操作がより簡単に行えます。これまではモデルからでは上記の様に配列操作で項目を編集しなければいけませんでしたが、メソッドでより簡単になります。モデルからの操作はリスナーに通知されませんので非常に便利です。
また、リスト中に画像を表示できるようになりました。が、画像入りのものはダイアログエディタでは作成できません。
css.awt.XItemList
- long ItemCount
- void insertItem( long position, string, itemText, string itemImageURL )
- 挿入位置と表示テキスト、画像を指定して項目を追加します。
- void insertItemText( long position, string itemText )
- void insertItemImage( long position, string itemImageURL )
- void removeItem( long position )
- void removeAllItems()
- void setItemText( long position, string itemText )
- void setItemImage( long position, string itemImageURL )
- void setItemTextAndImage( long position, string itemText, string itemImageURL )
- void setItemData( long position, any itemData )
- なにかデータを設定します。設定できるデータは実装に依存。デフォルトでは利用されない。データ保持に利用できるらしい・・・。
- string getItemText( long position )
- string getItemImage( long position )
- css.beans.Pair<string, string> getItemTextAndImage( long position )
- 既存の項目のテキストと画像を取得します。返り値の First 要素がテキスト、 Second が画像 URL。
- any getItemData( long position )
- []css.beans.Pair<string, string> getAllItems()
- void addItemListListener( XItemListListener listener )
- void removeItemListListener( XItemListListener listener )