Top > OOoBasic > Dialog > MVC

コントローラとモデル Edit

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

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

コントローラを利用する必要があるのは次のような場合です。

  • リスナーを利用するとき
  • リストボックスの項目を取り扱うとき

Developer's Guide ではそのほか

  • ウィンドウやデバイスに依存した機能を利用するとき

コントローラとモデル取得 Edit

コントローラ取得 Edit

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

まず、ダイアログコントローラオブジェクトはダイアログ作成時に 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 という名前のコントロールのコントローラを取得しています。

モデル取得 Edit

ダイアログのモデルオブジェクトはダイアログのコントローラオブジェクトの 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