* フォーム [#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 |