Top > OOoBasic > Base > Forms

* フォーム [#g0ecd628]
データベースドキュメントに埋め込まれたフォーム。

フォームドキュメントは普通の Writer ドキュメントと変わりありませんが、com.sun.star.container.XChild インターフェースをサポートおり、そのインターフェースのメソッドを使用して親ドキュメントへアクセスできます。

#contents


** フォームコンテナ [#e8af9625]
データベースドキュメントに埋め込まれたフォームはフォームコンテナからアクセスできます。

 Sub Forms_1
   oDoc = StarDesktop.getCurrentComponent()
   oForms = oDoc.getFormDocuments()
 End Sub

** フォームの読み込み [#q4ef404b]
フォームドキュメントの読み込みには loadComponentFromURL メソッドを使用します。

 Sub Forms_2
   oDoc = StarDesktop.getCurrentComponent()
   Dim args(1) As New com.sun.star.beans.PropertyValue
   args(0).Name = "ActiveConnection"
   args(0).Value = oDoc.DataSource.getConnection("", "")
   args(1).Name = "OpenMode"
   args(1).Value = "open"
   
   oForms = oDoc.getFormDocuments()
   oForms.loadComponentFromURL("FormName", "_blank", 0, args)
 End Sub

編集状態で開く場合には OpenMode に openDesign を指定します。

** フォームの削除 [#v6a44195]
フォームは名前を指定して削除できます。

 Sub Form_3
   oDoc = StarDesktop.getCurrentComponent()
   oForms = oDoc.getFormDocuments()
   oForms.removeByName("FormName")
 End Sub

** フォームの作成 [#y214d372]
新しいフォームドキュメントを追加するには次のように com.sun.star.sdb.DocumentDefinition サービスをインスタンス化して挿入します。

 Sub Form_4
  oFormDocuments = StarDesktop.getCurrentComponent().getFormDocuments()
  oForm = oFormDocuments.createInstance("com.sun.star.sdb.DocumentDefinition")
  oFormDocuments.insertByName("New", oForm)
 end sub
** フォームから親データベースドキュメント [#s9512def]
フォームから親データベースドキュメントへアクセスするには getParent メソッドで親オブジェクトを取得します。

 Sub Form_10
   oDoc = ThisComponent
   oParent = oDoc.getParent()
   msgbox oParent.getLocation()
 End Sub

フォームがデータベースドキュメントに埋め込まれている場合には、次のようにしてフォームからデータベースドキュメントにアクセスできます。3.1 以降。

 oDbDoc = ThisDatabaseDocument


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