2011年7月20日水曜日

リストボックスを操作する (2)

今回は「リストボックスを操作する (1)」の続編。

前回のフォームを下図の通りに改造した :
  
サンプルコードも、前回のモジュールに対してプロシージャを追加した :
  
Private mobjDialog1 As Object
  
Sub Main
       DialogLibraries.LoadLibrary("Standard")
       mobjDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
       mobjDialog1.execute()
End Sub
  
Sub CommandButton1Click()
       Dim objListBox1 As Object
       Dim lngIndex As Long
       objListBox1 = mobjDialog1.getControl("ListBox1")
       For lngIndex = 0 To 10
              objListBox1.addItem("Item" & Format(lngIndex, "00"), lngIndex)
       Next lngIndex
End Sub
  
Sub CommandButton1xClick()
       Dim objListBox1 As Object
       Dim strValues(10) As String
       Dim lngIndex As Long
       objListBox1 = mobjDialog1.getControl("ListBox1")
       For lngIndex = 0 To 10
              strValues(lngIndex) = "Item" & Format(lngIndex, "00")
       Next lngIndex
       objListBox1.addItems(strValues, 0)
 
End Sub
  
Sub CommandButton2Click()
       Dim objListBox1 As Object
       objListBox1 = mobjDialog1.getControl("ListBox1")
       Msgbox(objListBox1.SelectedItem)
End Sub
  
Sub CommandButton2xClick()
       Dim objListBox1 As Object
       Dim strValues() As String
       Dim strMessage As String
       Dim lngUBound As Long
       Dim lngIndex As Long
       objListBox1 = mobjDialog1.getControl("ListBox1")
       strValues = objListBox1.SelectedItems
       lngUBound = UBound(strValues)
       For lngIndex = 0 To lngUBound
              strMessage = strMessage & strValues(lngIndex) & Chr$(13)
       Next lngIndex
       Msgbox(strMessage)
End Sub
  
Sub CommandButton3Click()
  Dim objListBox1 As Object
  objListBox1 = mobjDialog1.getControl("ListBox1")
  objListBox1.removeItems(0, 11)
End Sub
  
追加したコマンドボタンとそれぞれに対応するプロシージャは下記の通り :
  
   CommandButton1x  ⇔ CommandButton1xClick
   CommandButton2x   ⇔ CommandButton2xClick
   CommandButton3   ⇔ CommandButton3Click 
  
の三つ。他のプロシージャは、前回と全く変えていない。
  
「CommandButton1x」をクリックすると、「CommandButton1」をクリック
した場合と、結果は全く同じになる。但し、「CommandButton1x」ボタン
場合は、addItems メソッドを使用して、文字列の配列を一気に追加する
ことができる、ようだ。書式は下記の通り :
  
   ListBox 変数 = Form 変数.getControl(ListBox 名)
   ListBox 変数.addItems(ValueArrayIndex
)
  
ValueArray は追加したい値 (文字列) の配列、Index は追加したい行
のインデックス番号を指定する。
  
次に、「ListBox1」中の値から複数の行を選択し、それらの値を取得する
方法について述べる。これを可能にする為に、「ListBox1」の「プロパティー」
ウィンドウから「複数選択」プロパティを「はい」に変更する必要がある。
この設定を行うと、下図のように複数行が選択可能となる :
  
この状態で「CommandButton2x」ボタンをクリックすると下図のメッセージ
ボックスが表示される :
  
複数選択した行の値を取得するには、SelectedItems プロパティを用いる。
書式は下記の通り :
  
   ListBox 変数 = Form 変数.getControl(ListBox 名)
   文字列配列 = ListBox 変数.SelectedItems
  
最後に、「ListBox1」内の全ての値を削除する方法について。
リストボックスの値を削除するには、removeItems メソッドを使用する。
書式は下記の通り :
  
   ListBox 変数 = Form 変数.getControl(ListBox 名)
   ListBox 変数.removeItems(IndexCount
)
  
Index には、削除したいデータの開始行のインデックス番号を指定する。
Count には、削除したい件数を指定する。この例では。全データを削除
しているが、例えば、サンプルコードの該当部分を
  
   objListBox1.removeItems(1, 9)
  
とすると、最初の行の「Item00」と最後の「Item10」は消えずに残る。

0 件のコメント:

コメントを投稿