フォーム
フォームはドローページ上に存在するフォームコンテナにひとまとめに管理されているが、個々のフォームはサブフォームを含むことができる。 フォームでは容易にデータソースに接続してクエリーやテーブルのデータを表示できますが、 フォームは行セットサービスを実装しているため同じ事が行えます。 フォームの構造
フォームは以下の図のような構造を持ちます。フォームは各ドローページ上に存在します。そのため、ドローページが複数あるドキュメントでは取得の仕方が少し異なります。各ドキュメントの種類と構造はドキュメント参照。 フォームにサブフォームがありますが、これはサブフォームがコントロールとおなじ扱いを受けているためです。(具体的に言うと、com.sun.star.form.XFormComponent インターフェースをエクスポートしている。 取得
ドローページからフォームコンテナを通じて名前やインデックス指定でフォームオブジェクトを取得します。 フォームには名前が付いていますが、何も考えずに作成すると "Standard" という名前のフォームが作成されます。 一つのドローページから
Writer ドキュメントのようにドキュメントにドローページが一つしか無い場合。 Sub form_1 oDoc = ThisComponent oDrawPage = oDoc.getDrawPage() oForm = oDrawPage.getForms().getByName("Standard") End Sub 複数のドローページから
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 イベントから
「ボタンを押したとき」や「テキストが変更されたとき」、「ステータスが変更されたとき」などのイベントで実行されたプロシージャ中で、そのコントロールが所属するフォームオブジェクトを取得したいとき。 Sub form_4( oEv As com.sun.star.awt.ActionEvent ) oForm = oEv.Source.Model.Parent oForm.getByName("PushButton1") End Sub oEv から取得できる Source はコントロールのコントローラオブジェクトです。そのコントローラからは Model プロパティでコントロールのモデルオブジェクトにアクセスできます。そして、そのモデルが所属しているのがフォームオブジェクトです。 |