Top > OOoBasic > Form > Binding

バインド Edit

ドキュメント上にあるフォームコントロールでは次の値が表示できます。

  • データベースの値を表示
  • 値を表示 (データベースと関係のない) Calc のシート上に置いたコントロールではさらにセルの値と関連付けることができます。

Calc Edit

コントロールの値をセルに表示できます。

一方、リストボックス、コンボボックスではセルの値をコントロールに表示させ、さらに選択した値を別のセルに入力できます。

バインド Edit

セルに関連付けます。

Sub BindToCell_1
 oDoc = ThisComponent
 oForm = oDoc.getSheets().getByIndex(0)._
     getDrawPage().getForms().getByIndex(0)
 
 oCheckBox = oForm.getByName("CheckBox1")
 oBinding = oCheckBox.getValueBinding()
 If IsNull(oBinding) Then
   ' cell address to bind
   aAddr = CreateUnoStruct("com.sun.star.table.CellAddress")
   aAddr.Sheet = 0
   aAddr.Column = 0
   aAddr.Row = 1
   
   ' as css.beans.NamedValue
   aArg = CreateUnoStruct("com.sun.star.beans.NamedValue")
   aArg.Name = "BoundCell"
   aArg.Value = aAddr
   
   ' create ValueBinding with specifing to cell
   oBinding = oDoc.createInstanceWithArguments( _
       "com.sun.star.table.CellValueBinding", Array(aArg))
   
   ' bind
   oCheckBox.setValueBinding(oBinding)
 End If
End Sub

リストソース Edit

ソースの範囲は StartColumn = EndColumn の範囲のみリストの項目になります。

Sub ListSourceToCell_2
 oDoc = ThisComponent
 oForm = oDoc.getSheets().getByIndex(0)._
     getDrawPage().getForms().getByIndex(0)
 
 oListBox = oForm.getByName("ListBox1")
 
 ' cell address to bind
 aAddr = CreateUnoStruct("com.sun.star.table.CellRangeAddress")
 aAddr.Sheet = 0
 aAddr.StartColumn = 2
 aAddr.EndColumn = 2
 aAddr.StartRow = 5
 aAddr.EndRow = 7
   
 ' as css.beans.NamedValue
 aArg = CreateUnoStruct("com.sun.star.beans.NamedValue")
 aArg.Name = "CellRange"
 aArg.Value = aAddr
   
 ' create ValueBinding with specifing to cell
 oSource = oDoc.createInstanceWithArguments( _
     "com.sun.star.table.CellRangeListSource", Array(aArg))
 
 ' bind
 oListBox.setListEntrySource(oSource)
End Sub

セルに入力する値を選択された項目の位置にするにはバインディングに css.table.ListPositionCellBinding サービスを利用します。

Sub ListSourceToCell_3
 oDoc = ThisComponent
 oForm = oDoc.getSheets().getByIndex(0)._
     getDrawPage().getForms().getByIndex(0)
 
 oListBox = oForm.getByName("ListBox1")
 
 ' cell address to bind
 aAddr = CreateUnoStruct("com.sun.star.table.CellAddress")
 aAddr.Sheet = 0
 aAddr.Column = 0
 aAddr.Row = 6
   
 ' as css.beans.NamedValue
 aArg = CreateUnoStruct("com.sun.star.beans.NamedValue")
 aArg.Name = "BoundCell"
 aArg.Value = aAddr
 
   ' create ValueBinding with specifing to cell
 oBinding = oDoc.createInstanceWithArguments( _
     "com.sun.star.table.ListPositionCellBinding", Array(aArg))
 
 ' bind
 oListBox.setValueBinding(oBinding)
End Sub

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