ダイアログの操作

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
doc OOo
Book.png


Apache OpenOffice Basic のダイアログは、1 個のダイアログウィンドウ上にテキストフィールド、リストボックス、ラジオボタンなどの各種コントロールが配置されます。

ダイアログの作成法

Apache OpenOffice ダイアログエディタを使用して、ダイアログを作成および構成できます。

ダイアログエディタを使用したダイアログの作成および構成

コントロール要素をデザインパレット (右) からダイアログ領域にドラッグして、位置とサイズを定義できます。

ここでのサンプルダイアログでは、ラベルとリストボックスを配置しています。

ラベルとリストボックスが含まれたダイアログ

ダイアログを表示するには、次のサンプルコードのような手順で処理します。

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.DlgDef)
Dlg.Execute()
Dlg.dispose()

上記のサンプルコードでは、CreateUnoDialog により Dlg という名前のオブジェクトを作成していますが、該当するダイアログに対してはこのオブジェクトを介して参照することになります。また実際にダイアログを作成するには、必要なライブラリ (上記のサンプルコードでは Standard ライブラリ) を事前に読み込む必要があります。LoadLibrary メソッドがこのタスクを実行します。

ダイアログオブジェクト (上記のサンプルコードでは Dlg) に対して必要な初期化を行った後、Execute メソッドを実行することで、該当するダイアログが表示されます。ここでサンプルとしたタイプのダイアログは、表示中に他のプログラムによる処理が何もできなくなるため、モーダルダイアログと呼ばれます。ダイアログが表示されている間のプログラムは、Execute メソッドを実行し続けている状態になります。

プログラム最終行の dispose メソッドは、ダイアログの使用するリソースをプログラム終了時に解放させるためのものです。

ダイアログのクローズ処理

OK またはキャンセルのボタンによるクローズ

ダイアログに OK またはキャンセルのボタンが表示されている場合、いずれかのボタンがクリックされた段階で、ダイアログは自動的に閉じられます。これらのボタンの操作の詳細は、「ダイアログコントロールの詳細」で説明されています。

OK ボタンをクリックしてダイアログを閉じた場合は Execute- メソッドの戻り値として 1 が返され、それ以外の場合は 0 が返されます。

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.MyDialog)
Select Case Dlg.Execute() 
Case 1
  MsgBox "Ok pressed"
Case 0 
  MsgBox "Cancel pressed"
End Select

タイトルバーの閉じるボタンによるクローズ処理

タイトルバーの閉じるボタンをクリックして、ダイアログウィンドウをクローズできます。ダイアログの Execute メソッドは、0 の値を返します。これは、「キャンセル」をクリックした場合と同じです。

プログラムによる明示的なクローズ処理

プログラム内に次のような endExecute メソッドを記述することでも、ダイアログウィンドウをクローズできます。

Dlg.endExecute()

コントロール要素へのアクセス

各ダイアログには、必要な数のコントロール要素を配置することができます。コントロール要素へアクセスするには、getControl メソッドを実行して、戻り値として返される該当コントロール要素の名前を利用します。

Dim Ctl As Object

Ctl = Dlg.getControl("MyButton")
Ctl.Label = "New Label"

上記のサンプルコードでは、MyButton というコントロール要素に対する参照用オブジェクトを用意して、この Ctl というオブジェクト変数を介することで、コントロール要素の初期化を行っています。そしてここでは最後に、コントロール要素の Label 属性に New Label という値を設定しています。

Documentation note.png Apache OpenOffice Basic の識別子と異なり、コントロール要素の名前では、大文字と小文字が区別されます。

コントロール要素およびダイアログでの モデル の使用法

Apache OpenOffice API を利用する際には、実際に表示されるプログラム要素 (View: ビュー) と、その背後に存在するデータやドキュメント (Model: モデル) とを使い分けなければならない場合があります。ダイアログとコントロール要素のオブジェクトの下層には、コントロール要素のメソッドや属性以外に、Model というオブジェクトが存在します。このオブジェクトを利用することで、ダイアログやコントロール要素の内容に直接アクセスすることができます。

Apache OpenOffice に用意された API の中でも、ダイアログに関しては、データとその表示内容の境界が非常にあいまいです。API の要素には、View と Model のどちらからでもアクセスできます。

Model 属性は、ダイアログおよびコントロール要素オブジェクトのモデルに対する、プログラム制御によるアクセスに利用します。

Dim cmdNext As Object

cmdNext = Dlg.getControl("cmdNext")
cmdNext.Model.Enabled = False

上記のサンプルコードでは、Dlg というダイアログにある cmdNtext というボタンを、cmdNtext からのモデルオブジェクトを用いて非アクティブにしています。


Content on this page is licensed under the Public Documentation License (PDL).


Personal tools