Top > OOoBasic > Dialog > ListBox

*リストボックス [#oba6738b]

複数の項目からひとつを選ばせるまたは、複数を選ぶことができるリストボックス。

#contents

**モデル [#r54e0430]
モデルオブジェクト
***共通プロパティ [#q9d5dd6f]
他のコントロールと共通のプロパティは次のものです。
-[[一般プロパティ>../Common]]
-[[フォント設定>../Font]]
-[[枠線>../Others#x10300ff]]
-[[文字の配置>../Others#ofb4d3c0]]
***項目 [#ace2ede6]
|プロパティ|型|説明|
|''StringItemList''|<sequence>string|リストの項目。|
|''MultiSelection''|boolean|複数選択可能にする。|
|''SelectedItems''|<sequence>string|選択されているリストの項目位置("0" 基準)。|
|''ReadOnly''|boolean|読み込み専用にする。読み取り専用にすると項目が選択できない。|


***ドロップダウン [#j1253589]
|プロパティ|型|説明|
|''Dropdown''|boolean|ドロップダウンを有効にする。有効にするとドロップダウンのボタンが表示されるが、単一行しか項目が表示されない。|
|''LineCount''|integer|ドロップダウン利用時に表示される項目数。|

**モデルでの操作 [#k7b39f24]
モデルオブジェクトでの操作。コントローラオブジェクトが利用できる場合にはリストの操作はそちらの方が便利です。フォームなどモデルしか利用できない場合に利用します。

フォームでもコントロールのコントローラにアクセスして利用できます。

モデルを介して行なった場合にはイベントが発生しませんが、コントローラを介して行うと、ユーザーが GUI から操作したのと同じようにイベントが発生します。

リストの項目の操作は、基本的に自分で配列を操作することで行います。
**全ての項目を取得 [#re07d8c5]
 Sub GetItems( oListBox As Object )
   GetItems = oListBox.StringItemList
 End Sub
***項目数を取得する [#fe03f378]
項目数を取得します。
 Function GetItemCount( oListBox As Object ) As Integer
   n = UBound(oListBox.StringItemList)
   GetItemCount = n + 1
 End Function
***リストを設定する [#kce08523]
リストの項目を変更します。
 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
***項目を追加する [#df755fd9]
指定位置に項目を追加します。

 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

***複数項目を追加する [#d0fbe7c0]
複数項目を一度に指定位置に挿入します。
  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
***項目を取得する [#r735496e]
指定した位置の項目を取得します。

 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
***選択する [#t16d3bc5]
 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

***選択中の項目のインデックスを取得 [#qf159c9b]
選択中の項目のインデックスを配列として取得します。
 Function SelectedItemsPos( oListBox As Object)
   SelectedItemsPos = oListBox.SelectedItems
 End Function

***選択中の項目を取得 [#v2d54a03]
選択中の項目を配列として取得します。
 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
**コントローラ [#xb6a9968]
**コントロール [#xb6a9968]

コントロールのコントローラオブジェクト
コントロールオブジェクト

-[[一般>OOoBasic/Dialog/Controller_Common]]

|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 )
--remoe items
-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 インターフェース [#hdc21a24]
OOo 3.3 から利用できるモデル用のインターフェースです。モデルから項目の操作がより簡単に行えます。これまではモデルからでは上記の様に配列操作で項目を編集しなければいけませんでしたが、メソッドでより簡単になります。モデルからの操作はリスナーに通知されませんので非常に便利です。

また、リスト中に画像を表示できるようになりました。が、画像入りのものはダイアログエディタでは作成できません。

css.awt.XItemList
- long ItemCount
-- attribute。リストの項目数。
- 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 )
-- 既存の項目の画像 URL を取得します。
- css.beans.Pair<string, string> getItemTextAndImage( long position )
-- 既存の項目のテキストと画像を取得します。返り値の First 要素がテキスト、 Second が画像 URL。
- any getItemData( long position )
-- 既存の項目のデータを取得します。
- []css.beans.Pair<string, string> getAllItems()
-- 全項目のテキストと画像 URL を取得します。
- void addItemListListener( XItemListListener listener )
-- 
- void removeItemListListener( XItemListListener listener )
--

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes