Top > OOoBasic > Form > Form

フォーム Edit

フォームはドローページ上に存在するフォームコンテナにひとまとめに管理されているが、個々のフォームはサブフォームを含むことができる。

フォームでは容易にデータソースに接続してクエリーやテーブルのデータを表示できますが、 フォームは行セットサービスを実装しているため同じ事が行えます。

フォームの構造 Edit

フォームは以下の図のような構造を持ちます。フォームは各ドローページ上に存在します。そのため、ドローページが複数あるドキュメントでは取得の仕方が少し異なります。各ドキュメントの種類と構造はドキュメント参照。

forms.png

フォームにサブフォームがありますが、これはサブフォームがコントロールとおなじ扱いを受けているためです。(具体的に言うと、com.sun.star.form.XFormComponent インターフェースをエクスポートしている。com.sun.star.form.FormComponent サービスから派生している。)

取得 Edit

ドローページからフォームコンテナを通じて名前やインデックス指定でフォームオブジェクトを取得します。

フォームには名前が付いていますが、何も考えずに作成すると "Standard" という名前のフォームが作成されます。

一つのドローページから Edit

Writer ドキュメントのようにドキュメントにドローページが一つしか無い場合。

Sub form_1
  oDoc = ThisComponent
  oDrawPage = oDoc.getDrawPage()
  oForm = oDrawPage.getForms().getByName("Standard")
End Sub

複数のドローページから Edit

Calc、Impress、Draw のようにドローページが各ページごとにある場合。

Sub form_2
  oDoc = ThisComponent
  oDrawPages = oDoc.getDrawPages()
  oDrawPage = oDrawPages.getByIndex(0)
  oForm = oDrawPage.getForms().getByName("Standard")
End Sub

または、特定のシートやページに所属するドローページから取得する場合。

Sub form_3
  oDoc = ThisComponent
  oSheets = oDoc.getSheets()
  oSheet = oSheets.getByName("表1")
  oDrawPage = oSheet.getDrawPage()
  oForm = oDrawPage.getForms().getByName("Standard")
End Sub

イベントから Edit

「ボタンを押したとき」や「テキストが変更されたとき」、「ステータスが変更されたとき」などのイベントで実行されたプロシージャ中で、そのコントロールが所属するフォームオブジェクトを取得したいとき。

Sub form_4( oEv As com.sun.star.awt.ActionEvent )
  oForm = oEv.Source.Model.Parent
  
  oForm.getByName("PushButton1")
End Sub

oEv から取得できる Source はコントロールのコントローラオブジェクトです。そのコントローラからは Model プロパティでコントロールのモデルオブジェクトにアクセスできます。そして、そのモデルが所属しているのがフォームオブジェクトです。


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