コントロール
フォームの上のコントロールはダイアログ上のものとよく似ていますが、フォームでのコントロール制御はコントロールのコントローラオブジェクトにアクセスしにくいため、コントロールのモデルオブジェクトで行うことになります。 コントロールモデル取得
フォームオブジェクトから様々なメソッドでフォームに所属するコントロールを取得できます。以下のようなインターフェースを利用できますが、主にコントロール名を指定して取得することが多いため、XNameContainer インターフェースをよく使用します。
フォームから取得
フォームからコントロールを取得します。 Sub form_control_1 oDoc = ThisComponent oDrawPage = oDoc.getDrawPage() oForm = oDrawPage.getForms().getByName("Standard") oControl = oForm.getByName("PushButton") End Sub この様にして取得できるのはコントロールのモデルオブジェクトです。モデルオブジェクトからコントローラオブジェクトにアクセスすることはできません。 イベントで取得
フォームを取得するまでが異なりますが、後は上記と同じになります。 Sub form_4( oEv As com.sun.star.awt.ActionEvent ) oForm = oEv.Source.Model.Parent oForm.getByName("PushButton1") End Sub サブフォームのコントロール
フォームにコントロールとしてサブフォームを配置することができます。親フォームからサブフォームにあるコントロールにアクセスすることもできます。 oSubForm = oForm.getByName("SubForm") oSubButton = oObj1.getByName("SubPushButton") コントロールコントローラ取得
フォームコントロールのモデルを取得すると、ドキュメントビューから該当するコントロールのコントローラを取得できます。 oDoc = ThisComponent oController = oDoc.getCurrentController() oButton_Model = oForm.getByName("PushButton1") oButton = oController.getControl( oButton_Model ) コントロールの追加
動的なコントロールの追加は図形描写と同じように行います。図形描写参照。 イベント
コントロールを押したり、テキストを編集したり、マウスで操作したりといったイベントを割り当てます。 イベントの設定
コントロールにイベントを割り当てて各動作時にコードが実行されるように設定します。イベントの割り当ては各コントロールに対して行うのではなく、フォームオブジェクトに対して行います。 イベントは ScriptEventDescriptor struct で各項目を設定します。 aEvent = CreateUnoStruct( _ "com.sun.star.script.ScriptEventDescriptor") With aEvent .AddListenerParam = "" .EventMethod = "actionPerformed" .ListenerType = "XActionListener" .ScriptCode = "vnd.sun.star.script:Standard.Module1.btn_push?language=Basic&location=document" .ScriptType = "Script" End With
イベントの種類とインターフェース、メソッド名はイベントなどを参照してください。 実際にイベントを割り当てるには次のようにします。 oForm.registerScriptEvent(1,aEvent) ここで、最初の引数はイベントを割り当てたいイベントエントリのインデックスです。 イベントの削除
revokeScriptEvent メソッドで一つのイベントを削除できます。引数は順にインデックス、インターフェース名、メソッド名、オプションを指定します。 oForm.revokeScriptEvent( _ 0, "XActionListener", "actionPerformed", "" ) revokeScriptEvents メソッドにイベントエントリのインデックスを指定してそのコントロールに設定されているすべてのイベントを削除します。 oForm.revokeScriptEvents(1) イベントの取得
設定されているすべてのイベントを取得するには getScriptEvents メソッドを利用します。返り値は []ScriptEventDescriptor です。 aEvents = oForm.getScriptEvents() メモ
|