Top > OOobbs > 60

OOobbs/60 Edit

  • サマリ: シート上のListBoxに項目を追加する
  • 環境: Calc
  • 状態: 解決
  • 投稿者: Kuma?
  • 投稿日: 2005-04-20 (水) 21:54:05

質問 Edit

VineLinuxでOOo1.1.2を使っています。 表計算シート上に作成したListBoxコントロールに、シートのセルからデータを読み込みListBoxに加えて行くプログラムを下記のように作りました。

Sub Button_click
 Dim oNameList(3) as String
 oSheet=Thiscomponent.getSheets.getByName("表1")
 oDraw=oSheet.DrawPage
 oForm=oDraw.Forms("standard")
 oListBox=oForm.getByName("ListBox")
 For n=0 to 3
   oCell=oSheet.getCellByPosition(0,n)
   oNameList(n)=oCell.getString()
   oListBox.addItem(oNameList(n),n)
 Next
End Sub

ところがoListBox.addItem(oNameList(n),n)のところで『Basicランタイムエラー:プロパティまたはメソッドが見つかりません』と言うエラーが出てしまいます。 これを

 For n=0 to 3
   oCell=oSheet.getCellByPosition(0,n)
   oNameList(n)=oCell.getString()
 Next
 oListBox.Model.StringItemList=oNameList()

と変えても同じエラーが出ます。 何処が誤りなのかお教え頂きたく宣しくお願いいたします。

回答 Edit

  • フォーム上のリストボックスのaddItemメソッドは、コントロール要素のビューに含まれているようです。(「StarSuite7OfficeSuite Basicプログラマ向けガイド第12章以降を参照しました。)ビューを取得して設定するように以下のように書き換えました。
    Sub Button_click
    Dim oDoc as Object
    Dim oDocCtrl as Object
    Dim oForm as Object
    Dim oListBox as Object
    Dim oListBoxView as Object
    Dim oNameList(3) as String
     oDoc = Thiscomponent
     oDocCtrl = oDoc.getCurrentController()
     oSheet=oDoc.getSheets.getByName("表1")
     oDraw=oSheet.DrawPage
     oForm=oDraw.Forms("standard")
     oListBox=oForm.getByName("ListBox")
     oListBoxView = oDocCtrl.GetControl(oListBox)
     For n=0 to 3
       oCell=oSheet.getCellByPosition(0,n)
       oNameList(n)=oCell.getString()
       oListBoxView.addItem(oNameList(n),n)
     Next n
    End Sub

ついでですが、質問が解決したら、各項目毎に右上にある赤色の[edit]の内、一番上の[edit]をクリックして状態を未解決→解決に変更した方がいいと思います。-- 河井? 2005-04-21 (木) 13:07:27

  • 河井さん、丁寧なご教示有難う御座いました。たった今、教えて頂いたコードを実行してみましたら、完璧に出来ました。 -- Kuma? 2005-04-21 (木) 23:17:26


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes