2011年7月19日火曜日

コンボボックスを操作する (2)

「コンボボックスを操作する (1)」の項の追記。

前回のフォームにボタンを下図の通り追加した :
  
コードも前回のものにプロシージャを追加した。改造後のコードは下記
の通り :
  
Private mobjDialog1 As Object
  
Sub Main
       DialogLibraries.LoadLibrary("Standard")
       mobjDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
       mobjDialog1.execute()
End Sub
  
Sub CommandButton1Click()
       Dim objComboBox1 As Object
       Dim lngIndex As Long
       objComboBox1 = mobjDialog1.getControl("ComboBox1")
       For lngIndex = 0 To 20
              objComboBox1.addItem("Item" & Format(lngIndex, "00"), lngIndex)

       Next lngIndex
End Sub
  
Sub CommandButton1xClick()
       Dim objComboBox1 As Object
  Dim strValues(20) As String
  Dim lngIndex As Long
  objComboBox1 = mobjDialog1.getControl("ComboBox1")
  For lngIndex = 0 To 20
  strValues(lngIndex) = "Item" & Format(lngIndex, "00")
  Next lngIndex
  objComboBox1.addItems(strValues, 0)
End Sub
  
Sub CommandButton2Click()
       Dim objComboBox1 As Object
       objComboBox1 = mobjDialog1.getControl("ComboBox1")
       objComboBox1.setDropDownLineCount(8)
End Sub
  
Sub CommandButton3Click()
      Dim objComboBox1 As Object
      objComboBox1 = mobjDialog1.getControl("ComboBox1")
      Msgbox(objComboBox1.Text)
End Sub
  
Sub CommandButton4Click()
  Dim objComboBox1 As Object
  objComboBox1 = mobjDialog1.getControl("ComboBox1")
  Msgbox(objComboBox1.getItem(4))
End Sub
  
Sub CommandButton5Click()
  Dim objComboBox1 As Object
  objComboBox1 = mobjDialog1.getControl("ComboBox1")
  objComboBox1.removeItems(0, 21)
End Sub
  
追加したコマンドボタンと対応する、それらにプロシージャは下記の通り :
  
   CommandButton1x  ⇔ CommandButton1xClick
   CommandButton4   ⇔ CommandButton4Click
   CommandButton5   ⇔ CommandButton5Click 
  
の三つ。他のボタンとプロシージャについては、前回と全く変えていない。
  
「CommandButton1x」をクリックすると、「CommandButton1」をクリック
した場合と、結果は全く同じになる。但し、「CommandButton1x」ボタンの
場合は、addItems メソッドを使用している。addItem メソッドが値を一つ
ずつ追加していくのに対して、addItems メソッドは文字列の配列を一気
に追加できる、ようだ。書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   ComboBox 変数.addItems(ValueArrayIndex
)

  
ValueArray は追加したい値 (文字列) の配列、Index は追加したい行
のインデックス番号を指定する。
  
次に、「CommandButton4」ボタンはコンボボックスに追加された値の
うち、インデックス番号が 4 の行の値を取得するマクロである。これを
実現する為に、getItem メソッドを使用している。書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   文字列変数ComboBox 変数.getItem(Index
)

  
Index には、取得したい行のインデックス番号を指定する。getItem
メソッドは戻り値として取得した値の文字列を返す。
{CommandButton4」ボタンをクリックした結果は下図の通り :
    
最後に「CommandButton5」ボタンについて。このボタンをクリックすると、
コンボボックス内の値全てが削除される。ここでは、removeItems メソッド
を使用している。書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   ComboBox 変数.removeItems(Index, Count
)

  
Index には、削除したいデータの開始行のインデックス番号を指定する。
Count には、削除したい件数を指定する。この例では。全データを削除
しているが、例えば、サンプルコードの該当部分を
  
   objComboBox1.removeItems(1, 19)
  
とすると、最初の行の「Item00」と最後の「Item20」は消えずに残ることに
なる。

0 件のコメント:

コメントを投稿