▼ダイアログの操作

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


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

▼ダイアログの作成法

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

Documentation basicguide dlg 01.gif
ダイアログエディタを使用したダイアログの作成および構成

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

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

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

▼ダイアログを\'95\'5c示するには、以下のサンプルコードのような手順で処理します。

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


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

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

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

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

▼OK またはキャンセルの\'83\'7bタンによるクローズ

ダイアログに 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

▼タイトルバーの閉じる\'83\'7bタンによるクローズ処理

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

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

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

Dlg.endExecute()

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

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

Dim Ctl As Object
 
Ctl = Dlg.getControl("MyButton")
Ctl.Label = "New Label"

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

Template:Documentation/Note

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

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

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

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

Dim cmdNext As Object
 
cmdNext = Dlg.getControl("cmdNext")
cmdNext.Model.Enabled = False

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

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