Top > OOoBasic > Dialog > MVC

*コントローラとモデル [#vd76405e]

-モデル~
コンポーネントのデータを保持し、低レベルな動作を行います。コントロールの色や見た目といった部分はモデルが取り扱います。

-コントローラ~
ユーザーとモデルの間のやり取りをコントロールします。

普段、ダイアログのコントロールを取り扱うときにはモデルを利用します。

コントローラを利用する必要があるのは次のような場合です。
-リスナーを利用するとき
-リストボックスの項目を取り扱うとき

Developer's Guide ではそのほか
-ウィンドウやデバイスに依存した機能を利用するとき

#contents

**コントローラとモデル取得 [#k507a204]

***コントローラ取得 [#r7f45c03]
各コントロールのコントローラはダイアログコントローラオブジェクトから取得します。

まず、ダイアログコントローラオブジェクトはダイアログ作成時に ''CreateUnoDialog'' ランタイム関数から返されるものです。

 Sub Dialog_1
 Dim oDialog As Object
   DialogLibraries.LoadLibrary("Standard")
   oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oDialog.execute()
 End Sub

ここでの oDialog 変数に格納されている値をダイアログコントローラオブジェクトと呼ばれます。

コントロールのコントローラオブジェクトはダイアログコントロールオブジェクトから取得できます。各コントロールのコントローラオブジェクトはコントロールの名前を指定して ''getControl'' メソッドで取得します。

 Sub Dialog_2
 Dim oDialog As Object, oTextField1 As Object
   DialogLibraries.LoadLibrary("Standard")
   oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oTextField1 = oDialog.getControl("TextField1")
   oDialog.execute()
 End Sub

TextField1 という名前のコントロールのコントローラを取得しています。

***モデル取得 [#v5a1edfe]

ダイアログのモデルオブジェクトはダイアログのコントローラオブジェクトの ''Model'' プロパティから取得します。

 Sub Dialog_3
 Dim oDialog As Object, oDialogModel As Object
   DialogLibraries.LoadLibrary("Standard")
   oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oDialogModel = oDialog.Model
   oDialog.execute()
 End Sub

コントロールのモデルオブジェクトは各コントロールのコントローラの ''Model'' プロパティから取得します。

 Sub Dialog_4
 Dim oDialog As Object
 Dim oTextField1 As Object, oTextFieldModel1 As Object
   DialogLibraries.LoadLibrary("Standard")
   oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oTextField1 = oDialog.getControl("TextField1")
   oTextFieldModel1 = oTextField.Model
   oDialog.execute()
 End Sub

また、ダイアログのモデルからも取得できます。

 Sub Dialog_5
 Dim oDialog As Object, oDialogModel As Object
 Dim oTextField1 As Object, oTextFieldModel1 As Object
   DialogLibraries.LoadLibrary("Standard")
   oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oDialogModel = oDialog.Model
   oTextFieldModel1 = oDialogModel.getByName("TextField1")
   oDialog.execute()
 End Sub

コントローラを利用しないのであれば、ダイアログモデルから名前指定で取得することが多いです。

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