OOobbs/54
質問
最近、拝見させてもらい勉強しております。 Text、SelectedText、getItem、getText、getSelectedText等を使って試みたのですが、ことごとく失敗しました。どこをどうすれば良いのでしょうか。 回答
例として次のようなダイアログを考えました。
マクロは "Standard" ライブラリの "Module1" に次のようにしました。 (特に記述するモジュール名は関係ありません) コードの説明は後のほうに書きます。(例として作成したドキュメント REM ***** BASIC ***** Dim oDialog As Object Dim oListBox1 As Object, oComboBox1 As Object Sub Main Dim aListStrings() As String Dim aComboStrings() As String DialogLibraries.LoadLibrary("Standard") oDialog = createUnoDialog( DialogLibraries.Standard.Dialog1 ) With oDialog oListBox1 = .getControl("ListBox1") oComboBox1 = .getControl("ComboBox1") End With aListStrings() = Array("List1","List2","List3") aComboStrings() = Array("Item1","Item2","Item3") oListBox1.addItems(aListStrings(),0) oComboBox1.addItems(aComboStrings(),0) oDialog.execute() oDialog.dispose() End Sub Sub Button1_initiated MsgBox oListBox1.getSelectedItem() End Sub Sub Button2_initiated MsgBox oComboBox1.getSelectedText() End Sub 作成したダイアログの "ボタン 1" に Sub Button1_initiated を "ボタン 2" に Sub Button2_initiated を割り当てます。共に「ボタンが押されたとき (When initiating)」に割り当てます。 この状態で Main を実行するとダイアログが表示されます。リストボックスまたはコンボボックスのアイテムを選択した状態でボタンをクリックすると MsgBox に選択中の値が表示されます。 このコードを部分ごとに説明します。 Sub Main Dim aListStrings() As String Dim aComboStrings() As String DialogLibraries.LoadLibrary("Standard") oDialog = createUnoDialog( DialogLibraries.Standard.Dialog1 ) この部分はダイアログオブジェクトを作成している部分です。 With oDialog oListBox1 = .getControl("ListBox1") oComboBox1 = .getControl("ComboBox1") End With そして,ダイアログオブジェクトからコントロール名を指定してそれぞれのオブジェクトを取得しています。このとき,getControl メソッドにコントロール名を指定しています (コントロール名はコントロールのプロパティーの最上段の名前プロパティーで付けたもの)。ここで注意することは,ダイアログモデルオブジェクトからコントロールオブジェクトを取得するのではないということです。 aListStrings() = Array("List1","List2","List3") aComboStrings() = Array("Item1","Item2","Item3") oListBox1.addItems(aListStrings(),0) oComboBox1.addItems(aComboStrings(),0) そして,この部分ですが。この部分ではそれぞれのコントロールに項目を追加しています。項目の追加はリストボックス,コンボボックス共に addItems メソッドなどで行います。二つの引数はそれぞれ,追加する項目の文字列による配列,項目を追加し始める位置です。 oDialog.execute() oDialog.dispose() End Sub ... Sub Button1_initiated MsgBox oListBox1.getSelectedItem() End Sub ボタン 1 に割り当てたプロシージャです。ここで,リストボックスコントロールオブジェクトの getSelectedItem メソッドを利用して選択中の項目を取得しています。 Sub Button2_initiated MsgBox oComboBox1.getSelectedText() End Sub ボタン 2 に割り当てたプロシージャです。コンボボックスコントロールオブジェクトの getSelectedText メソッドで選択中の項目を文字列として取得します。 リストボックスとコンボボックスでは選択中の項目を取得する際のメソッド名が違うので注意が必要です。 リストボックスとコンボボックスの主要なメソッドについて書いておきます。
リストボックスでは複数選択可のときには getSelectedItems メソッドで配列として選択状態の項目全てを取得できます。また,リストボックスでは選択中の項目位置の取得も可能です。
|