フォームをMDI子ウィンドウとしてオープンした場合,マクロ実行の流れはモードレスダイアログと同じになります。
次のマクロでは、MDI子ウィンドウをオープンした後メッセージ待ち状態に入り、MDI子ウィンドウをクローズするとメッセージ待ち状態から抜けます。
※MDI子ウィンドウとは、同時に複数ドキュメントを扱える形式のアプリケーションで、各ドキュメントを表示しているウィンドウのことをいいます。メインウィンドウ内に表示されます。
例えば、JustBuilderの【プロジェクト-フォームの追加】を選択して表示されるデザインウィンドウです。
■ 操作手順 ■

!! Mainマクロ
FormWindows.Add("Form1") !! (1)
%a = Application.WorkPlace.Revolve !! (2)
!! フォームのUnloadイベント
event Unload()
end event
(1)FormWindows.Add("Form1")
フォームForm1をMDI子ウィンドウとしてオープンします。
- ●Addメソッド
- Add ( <Name>, <Source>, <Left>, <Top>, <Width>, <Height>, <Option>, <Context> )
MDI子ウィンドウを FormWindow オブジェクトとして開きます。
開いた FormWindow オブジェクトは、FormWindows コレクションオブジェクトが管理します。
Name
|
FormWindow オブジェクトを識別する名前を文字列で指定。 "Form1"を指定。
|
Source
|
読込元になる外部ストレージを指定。(省略:プロジェクト内部のフォーム)
|
Left
|
アプリケーション作業領域の左端からMDI子ウィンドウの左端までの距離をピクセル単位の数値で指定。
(省略:次のMDI子ウィンドウの表示位置)
|
Top
|
アプリケーション作業領域の上端からMDI子ウィンドウの上端までの距離をピクセル単位の数値で指定。
(省略:次のMDI子ウィンドウの表示位置)
|
Width
|
MDI子ウィンドウの左端から右端までの距離をピクセル単位の数値で指定。
(省略:デザイン時のサイズ)
|
Height
|
MDI子ウィンドウの上端から下端までの距離をピクセル単位の数値で指定。
(省略:デザイン時のサイズ)
|
Option
|
表示方法を数値で指定。(省略:普通サイズで開く)
|
Context
|
作成するときのコンテキストを指定。
オープンした FormWindow オブジェクトの Result プロパティに自動的にコピーされ、そのFormWindow オブジェクトの Load イベント以降で参照できる。
(省略:nilが渡されます)
|
|
(2)%a = Application.WorkPlace.Revolve
WorkplaceオブジェクトのRevolveプロパティを利用すると、マクロの手続き中にメッセージ待ち状態を作ることができます。Revolve プロパティから値を取得しようとすると、メッセージ待ち状態になり、アプリケーションの機能を対話的に利用することができます。
(3)Application.WorkPlace.Revolve = 1
処理をMainマクロに戻し、(2)の変数 %aに 1を返します。
メッセージ待ち状態で Revolve プロパティに値を書き込むと、メッセージ待ち状態を終了します。ここで、Revolve プロパティに書き込んだ値は、対応する Revolve プロパティを取得しようとしたマクロでの Revolve プロパティの値になります。
Revolveプロパティに関する記述を行わないと,マクロ実行時にMDI子ウィンドウが一瞬表示されたあとマクロの実行が終了してしまいます。
MDI子ウィンドウとしてオープンした場合,プルダウンメニュー[ウィンドウ]のウィンドウ名の一覧にフォームのキャプション"Form1"が表示されます。
※RevolveDepth プロパティ
再帰階層を示す RevolveDepth プロパティは、 Revolve プロパティの取得によりメッセージ待ち状態に入るたびに値が1つ大きくなり、Revolve プロパティへの設定によりメッセージ待ち状態を終わるたびに値が1つ小さくなります。
メッセージ待ち状態から抜ける場合は、RevolveDepth プロパティの値をチェックし、下位の階層にメッセージ待ち状態が残っていない事を確認して下さい。