* リストボックスの選択位置をBasicで操作したい [#f659f9ba]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|ひつじ|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(低,faq03,priority)|
 |~状態|#listbox3(完了,faq03,state)|
 |~カテゴリー|#listbox3(Base データベース,faq03,category)|
 |~投稿日|2010-10-06 18:44:03 (水)|
 |~OS|Windows XP|
 |~依存するページ|[[Control_Elements>http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Control_Elements]]|
 |~バージョン|#listbox3(3.2.1,faq03,version)|
 
 ** メッセージ [#vc979ceb]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 フォームにリストボックスを設置して、そのリストボックス内の項目を選択する動作をBasicによって操作したいと考えています。
 
 依存するページのリストボックスについて紹介されている中にある「selectItem(Item, SelectMode)」というメソッドが使えればよかったのですが、どうやら存在しないメソッドのようで困っています。
 
 何か解決方法がありましたら教えてください。よろしくお願いします。
 
 ----
 ***selectItemPos? [#f15cc412]
 >M.Kamataki (2010-10-07 14:28:17 (木))~
 ~
 サンプルがあると良いのですが、もしかすると依存するページに上げられているリストボックサービスの説明にある「SelectItemsPos (Array of Short)」が使えるかもと思いました。参考:faq/5/248「リストボックスの1番目と2番目が選択できない。」。外していたらゴメンなさい。~
 ~
 それと依存するページは、Basicのダイアログで利用できるコントロールの紹介なので、Baseのフォームで利用できるコントロールとは若干、異なるかもしれないです。~
 
 //
 ***無題 [#db4320a2]
 >tani (2010-10-07 14:34:32 (木))~
 ~
 試しにSelectItemsPosのサンプルを作ってみましたので添付します。~
 (一番上のメニューに追加しているダイアログテストからマクロを実行できます。Baseのテーブルだけを参照しており、フォーム機能は使っていませんが、同じような感じでいけるかもしれません。)~
 
 //
 ***フォームでは動かないのかもしれませんね [#g22596df]
 >ひつじ (2010-10-07 16:30:28 (木))~
 ~
 みなさん回答いただきありがとうございます。わざわざサンプルまで上げていただいて恐縮です。~
 ~
 tani さんのサンプルは正常に動いたのですが、私がフォームで同じように使ってみようと思うとうまくいきませんでした。~
 ~
 動かないサンプルを添付してみます。~
 
 //
 ***フォーム上コントロールのモデルでの操作 [#l18579ca]
 >はにゃ? (2010-10-07 17:20:22 (木))~
 ~
 モデルを介した操作は次のようにします。~
  oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
  oListbox = oForm.getByName("動物リスト")
  oListbox.SelectedItems = Array(1)
 モデルではなくコントロールを介して操作したい場合には、次のようにします。この場合、設定しているリスナーに該当するイベントの通知が行われます。それを好まない場合にはモデルを介して行なってください。~
  oListBoxCtrl = ThisComponent.getCurrentController().getControl(oListBox)
  oListBoxCtrl.selectItemPos(1, True)
 
 //
 ***操作できました [#ibefc041]
 >ひつじ (2010-10-08 06:39:20 (金))~
 ~
 はにゃ?さん、いつも的確な回答ありがとうございます。~
 ~
 例として挙げていただいたコードでやりたい操作が可能になりました。~
 ~
 今のところ Openoffice の Basic は適当にいじっているだけでやりたいことが大体できてしまっていたのですが、「モデル」とか「リスナー」あたりはちゃんと勉強しないと使いこなせそうにありませんね。~
 
 //
 ***サンプル [#rde03721]
 >M.Kamataki (2010-10-08 11:10:04 (金))~
 ~
 まとめとして2パターンのサンプルをアップします。~
 ~
 モデルを介したもの。~
 ~
 &attachref(faq6_37sample1.odb);~
 ~
 コントロールを介したもの。~
 ~
 &attachref(faq6_37sample2.odb);~
 ~
 ;; こんな感じであっているかな。~
 
 //
 ***まとめていただきありがとうございます [#uba0af92]
 >ひつじ (2010-10-09 07:11:47 (土))~
 ~
 こんなかんじでOKだと思います。また困ったときには質問させていただきますのでよろしくお願いします。~
 
 //
 #article