ダイアログを使用することによって対話的なユーザインタフェースを簡単に作成できます。ダイアログには処理を選択するためのボタンやテキストを入力するエディットフィールドなどのアイテムが使用できます。
ダイアログは画面の左上隅を(0,0)で半角文字の幅と高さを1とする座標で指定します。また、アイテムはダイアログのタイトルバーや境界線を除いた作業領域の左上隅を(0,0)とする座標です。
ダイアログが表示されると、事象によってダイアログまたはアイテムから様々なメッセージが生成されます。たとえばプッシュボタンをクリックすることによってボタンが選択されたことを知らせるClickメッセージを生成します。メッセージマップはそのメッセージをフィルタし、適切な処理にマッピングします。メッセージには次のようなメッセージがあります。
メッセージ | 説明 |
---|---|
Check | ラジオボタンまたはチェックボックスが選択状態になりました。 |
Click | プッシュボタンがクリックされました。 |
Close | ダイアログがクローズします。まだ画面に表示されています。 |
DoubleClick | ラジオボタンがダブルクリックされました(未サポート)。 |
Init | ダイアログがオープンします。画面には表示されていません。 |
ダイアログはダイアログテンプレート文によってその外観と動作を規定します。次のダイアログはログオンIDを入力するための1つのエディットフィールドと1つのボタンを持ちます。このダイアログがどのように定義されるのかを見てみます。
ダイアログテンプレートはダイアログの定義、アイテムの定義およびメッセージマップから構成されます。
まずDLGTEMPLATEを宣言してダイアログの名前を定義します。例では"logon"という名前を定義しています。このテンプレート名はダイアログを開始する関数Dialogでダイアログテンプレートを識別するために使われます。それぞれ違った名前を使用して複数のダイアログテンプレートを定義できます。
DLGTEMPLATE(logon)
ダイアログテンプレートで最初に行うことはダイアログの外観を定義することです。この例ではTITLE文でタイトルバーに表示される文字列を設定し、XY文とSIZE文で位置と大きさを設定しています。位置を指定しない場合はデフォルト処理として画面の中央にセンタリングされます。
TITLE("ログオンIDを入力して下さい") SIZE(45,11)
ダイアログ内の各アイテムはITEM文で定義します。このITEM文はアイテムの個数分だけ複数定義します。ITEM文でアイテムにテンプレート中で重ならない名前を付けます。
ITEM文の中でスタイル、位置、大きさを定義します。
ITEM(id) ; アイテム名 STYLE(EDIT TABSTOP) ; エディットフィールド、タブ有効 XY(7, 5) ; 位置 SIZE(18, 1) ; 大きさ ENDITEM
最後にメッセージマップを記述します。メッセージマップの記述はフィルタするメッセージ名にOnをつけて表します。どのアイテムから生成されたメッセージかを識別したいときは引数にアイテム名を指定します。
OnInit: ; 初期化メッセージ OnClick(ok): ; ボタンクリックメッセージ
PROC MAIN ; ダイアログテンプレート DLGTEMPLATE(logon) ;*******************************************; ; ダイアログの定義 ; ;*******************************************; TITLE( "ログオンIDを入力して下さい" ); タイトルバーのテキスト SIZE(40, 7) ; ダイアログの大きさ ;*******************************************; ; アイテムの定義 ; ;*******************************************; ; エディットフィールドの定義 ITEM(id) ; アイテム名 STYLE(EDIT TABSTOP) ; エディットフィールド XY(1, 2) ; 位置 SIZE(20, 1) ; 大きさ ENDITEM ; 了解ボタンの定義 ITEM(ok) ; アイテム名 TEXT("了解") ; ボタンテキスト STYLE(DEFPUSHBUTTON TABSTOP) ; デフォルトボタン XY(22, 2) ; 位置 SIZE(12, 1) ; 大きさ ENDITEM ;*******************************************; ; メッセージマップ ; ;*******************************************; ; アイテム名"ok"(了解ボタン)が押された時の処理 OnClick(ok): Type("LOGON TSS ") ; テキストの入力 Type(GetItemText(id)) ; idのテキストを入力 Type("[ENTER]") ; 実行キーの入力 EndDialog() ; ダイアログを終了 ENDDLGTEMPLATE ; ダイアログを表示します。 Dialog(logon) ENDPROC
文 | 説明 |
---|---|
DLGDTEMPLATE | ダイアログテンプレートの開始を宣言します。 |
ENDDLGTEMPLATE | ダイアログテンプレートの終了を表します。 |
SIZE | ダイアログまたはアイテムの大きさを指定します。 |
STYLE | ダイアログアイテムのスタイルを指定します。 |
TEXT | アイテムのテキストを指定します。 |
TITLE | タイトルバーのテキストを指定します。 |
XY | ダイアログまたはアイテムの位置を指定します。 |
OnXxxxxx: | メッセージをフィルタします。 |
ダイアログ、アイテムの大きさの指定
ダイアログまたはアイテムの大きさを指定します。大きさは半角文字の高さと幅をそれぞれ1とする単位です。SIZE文は記述する場所によって意味が変わります。
アイテムの大きさを指定します。
ダイアログの大きさを指定します。
●構文
SIZE(幅,高さ)
アイテムスタイルの指定
ダイアログアイテムのスタイルを指定します。スタイル名の後にタブやグループのスタイル属性を指定します。スタイル属性は省略できます。
●構文
STYLE( スタイル名 属性... )
●スタイル
スタイル | 説明、外観 |
---|---|
PUSHBUTTON | クリックされるごとにボタンはへこみClickメッセージを発生し、その後外観を元に戻します。 |
DEFPUSHBUTTON | デフォルトの動作を表すボタンで、他のアイテムにフォーカスがあってもクリックされます。ボタンは太枠で囲まれて通常のボタンと区別されます。他の動作はプッシュボタンと同じです。 |
AUTOCHECKBOX | クリックされるごとに状態を反転させます。 ・・・ チェックされています ・・・ チェックされていません |
AUTORADIOBUTTON | 同じグループ内のラジオボタンが選択にクリックされたとき、残りのラジオボタンを非選択状態にします。 ・・・ チェックされています ・・・ チェックされていません |
EDIT | 矢印キーで編集可能なテキストの入力フィールドです。 |
PASSWORD | スタイルが"EDIT"の時に有効な属性で、入力された文字列を*で表示します。 |
STATIC | フォーカスを持たない静的なテキストです。 スタティックテキスト |
GROUPBOX | 複数のアイテムを視覚的にグループ化します。左上に任意のテキストを表示可能です。実際のグループ動作はGROUPスタイルを使用してください。 |
●スタイル属性
スタイル属性は以下の値を組み合わせ指定します。
パラメータ | 説明 |
---|---|
GROUP | 次のグループスタイルを持つアイテムまでをグループ化します。グループ化するとカーソルキーはグループ内を移動するようになります。 |
TABSTOP | タブキーを有効にします。タブスタイルを持たないアイテムはタブキーによるフォーカス移動はしません。 |
アイテムテキストの設定
アイテムのテキストを指定します。
●構文
TEXT(文字列)
タイトルバーテキストの設定
ダイアログのタイトルバーのテキストを指定します。
●構文
TITLE(文字列)
ダイアログ、アイテムの位置の指定
ダイアログまたはアイテムの位置を指定します。XY文は記述する場所によって意味が変わります。位置は画面の左上隅を0,0とし、半角文字の高さと幅をそれぞれ1とする単位です。ダイアログの位置設定を省略した場合はデフォルト処理として、ダイアログは画面中央にセンタリングされます。
アイテムの位置を指定します。
ダイアログの位置を指定します。
●構文
XY( X位置, Y位置)