2011年7月16日土曜日

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

今回はコンボボックス編。今回は前回にも増して情報がなく、ようやく参考
文献 10) を見つけることができ、これを頼りに色々と試した結果を記す。

  
先ず、下図の「Dialog1」を用意する :
  
今回のサンプルコードは下記の通り :
  
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 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
  
それぞれのコマンドボタンに対応するプロシージャは下記の通り :
  
   CommandButton1 ⇔ CommandButton1Click
   CommandButton2 ⇔ CommandButton2Click
   CommandButton3 ⇔ CommandButton3Click
  
まず、フォームを開いて、「CommandButton1」をクリックすると、コンボ
ボックスに値が追加される。下図は、その値を表示しているところ :
  
コンボボックスに値を追加する方法は、リストボックスの場合と似ていて、
書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   ComboBox 変数.addItem(ValueIndex
)
  
addItem メソッドの Index 引数には、値を追加したい行のインデックス番号
を指定すれば良い。行のインデックス番号は、リストボックス同様、ゼロから
始まる整数。
  
上の図からもわかるように、ドリルダウンした時に表示される行数は 5 行
がデフォルトらしい。そこで、表示行数を 8 行にする為、「CommandButton2」
をクリックして、ドリルダウンしてみると、下図のように 8 行表示されるように
なる :
  
コンボボックスの表示する行数を指定するには、setDropDownLineCount
メソッドを使用する。書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   ComboBox 変数.
setDropDownLineCount(Line)
  
setDropDownLineCount の 引数 Line に、表示したい行数を指定する。
  
最後に、コンボボックスの中から選択した値を取得する方法を記す。
下図のように値を選択する :
  
この状態で「CommandButton3」をクリックすると、以下のメッセージ
ボックスが表示される :
  
選択した値を取得するには Text プロパティを用いる。書式は下記の通り :
  
   ComboBox 変数 = Form 変数.getControl(ComboBox 名)
   変数ComboBox 変数
.Text
  
コンボボックスにデフォルトで表示する方法についても試してみたかったが、
それらしきメソッドやプロパティがなく、断念した。ドキュメントが整っていない
のもあるが、やはりオブジェクトの構成がゴチャゴチャで、すっきりしない気
がする。LibreOffice はこのまま OpenOffice のオブジェクト構成を踏襲し
続けるのだろうか... 

0 件のコメント:

コメントを投稿