2025/08/28

@Dialogbox の使い方

@Dialogbox 関数はその名の通り、ダイアログボックスを表示することができます。この関数の使い方についてまとめます。


@Dialogbox の概要

@Dialogbox 関数を実行すると現在開いている文書をポップアップの画面(以下、ダイアログボックス)で開き、それを閉じるまで元に戻ることができません。ダイアログボックス内では、関数の引数で指定したフォームに切り替えて表示されます。

通常、ダイアログボックス内で更新したフィールドは、画面を閉じたタイミングで元の文書に反映されます。


@Dialogbox の仕様

デザイナーヘルプによると @Dialogbox の構文は次のように記載されています。

@DialogBox( form ; [AUTOHORZFIT] :[AUTOVERTFIT] :[NOCANCEL] :[NONEWFIELDS] :[NOFIELDUPDATE] :[READONLY] :[SIZETOTABLE] :[NOOKCANCEL] :[OKCANCELATBOTTOM] :[NONOTE] ; title )

なんだかややこしいですね。

整理すると引数は 3 つであることがわかります。

1 form 文字列 フォーム名
2 オプション キーワード 動作オプション設定(後述)

3 title 文字列 ウィンドウタイトル

オプションにはたくさんの種類がありますが、普段使いのものだけ列挙すると次の通りです。

[AUTOHORZFIT] ダイアログボックスの横幅を、レイアウト領域または表に合わせます。
[AUTOVERTFIT] ダイアログボックスの高さを、レイアウト領域または表に合わせます。
[NOCANCEL] ダイアログボックスに[キャンセル]ボタンを表示しません。
[SIZETOTABLE] [AUTOHORZFIT] と [AUTOVERTFIT] とともに指定することで、フォーム内の最初の表に合わせて、ダイアログボックスを表示します。

複数のオプションを指定する場合は、:(コロン)で連結して指定します。


ダイアログフォームの作成

サンプルとして部門を選択する画面を作ってみます。

ダイアログフォームは通常のフォームと同じように作成します。フォーム名には dlg を接頭語につけるなるなど、それとわかる名前を付けましょう。私は、通常のフォームではないことを明示するため名称に ( ) を付け、別名を指定するようにしています。

サンプルのダイアログフォームは表に合わせるタイプで作成します。

まず、1 行 1 列の表を配置し、その中にダイアログの画面を作ります。この中身がダイアログボックスに表示されるということですね。表のセルには文字でメッセージを記述し、フィールドは見栄えがいいようにカスケードした表に配置しています。

フィールドの設定は、以下の記事で紹介したものを流用するのですが、主題ではないので割愛します。必要に応じて、リンクをご確認ください。


メインフォームの作成

ダイアログボックスを呼び出す側のフォームは次のようなイメージです。

部門用の Dept と Func フィールドは テキスト / 作成時の計算結果 となっており、初期値は null です。そして、[選択]ボタンには以下の@式を記述します。

@DialogBox("dlgSetDept"; [AutoHorzFit]:[AutoVertFit]:[SizeToTable]; "部門の選択")


@Dialogbox の動作

メインフォームをプリビューして動作確認をします。[選択]ボタンをクリックするとダイアログが表示されます。

部門を選択して[OK]ボタンを押すと選択した結果がメインフォームに反映されます。[キャンセル]ボタンで閉じたときにはメインフォームには反映されません。

もう一度[選択]ボタンをクリックするとメインフォームの部門がダイアログボックスに表示されます。メインフォームとダイアログで同じ文書を参照していることがよくわかりますね。


まとめ

今回は @DialogBox 関数を紹介しました。

ポップアップで表示することにより、入力に集中させたり、関連する項目だけを入力させるなど、強調させることが可能となります。また、メインフォーム書いては冗長になる、入力時のガイドの表示も可能ですね。

また、複数のフォームで利用できる機能をダイアログボックス化することで、部品化することも可能です。うまく活用すると、メインフォームの設計をシンプルにできますね。


0 件のコメント:

コメントを投稿