dialog ステートメント,関数

ステートメント
構文    dialog string1 , num1 , num2 , num3 , num4 , num5 , string2 , num6
                string1 :タイトルバーに表示する文字列
                num1 :X座標
                num2 :Y座標
                num3 :幅
                num4 :高さ
                num5 :ダイアログのスタイル
                string2 :フォント名(省略可能:System)
                num6 :フォントのサイズ(省略可能)

機能
 ダイアログボックスを作成します。
 ダイアログボックスは1個しか作成できません。以前に作成したものは破棄されます。

 X座標、Y座標、幅、高さは、
ダイアログ座標系で指定します。座標はアプリケーションウィンドウの左上を 0,0 とする相対座標です。
 ダイアログのスタイル には 0 を指定してください。

 フォント名により、ダイアログ内で使用するコントロールのフォントを指定できます。
 フォントのサイズは正の数のときポイントの10倍、負の数のときドット数となります。

120 → 12ポイント
-16 → 16ドット

 フォント名、フォントのサイズは省略できます。


 dialog ステートメントを実行した時点ではダイアログボックスは表示されません。作成した後は、control ステートメントでダイアログボックス内に各種コントロールを作成し、dialog 関数でダイアログボックスを表示します。



関数
構文    dialog(num1 , num2 )
                num1 :ダイアログの表示モード | 制御を返してほしい通知コード
                num2 :タイムアウトする時間(ミリ秒単位:0で無効)(省略可能:0)

機能
 表示モードに1を指定すると dialog ステートメントで作成したダイアログボックスを表示し、コントロールの状態が変更されるのを待ち、状態が変更されたコントロールのコントロールIDを返します。どのような理由で制御を返したかは dlgnotify で調べます。
 表示モードに0を指定すると表示されているダイアログボックスを消します。消すだけで、破棄するわけではないため dialog(1) を再度呼ぶと表示できます。
 num2 を指定すると、指定した時間が経過すると自動的に制御を返します。このとき、返値は 0 になり、dlgnotify は DLGN_TIMEOUT になります。

 通知コードに指定できるのは以下の5種類です。通知コードを指定しないと、BUTTON(BS_PUSHBUTTON / BS_DEFPUSHBUTTON) が押されたときしか制御を返しません。
DLGN_CLICKED
DLGN_DOUBLECLICKED
DLGN_CHANGE
DLGN_SELCHANGE
DLGN_STATICCLICKED

コントロールと通知コードの関係

BUTTON BS_PUSHBUTTON / BS_DEFPUSHBUTTON
 押されたとき DLGN_CLICKED

BUTTON BS_AUTORADIOBUTTON / BS_AUTOCHECKBOX
 状態が変更されたとき DLGN_CLICKED

LISTBOX
 ダブルクリックされたとき DLGN_DOUBLECLICKED
 選択状態が変更されたとき DLGN_SELCHANGE

COMBOBOX
 ダブルクリックされたとき DLGN_DOUBLECLICKED
 選択状態が変更されたとき DLGN_SELCHANGE
 文字を入力したとき DLGN_CHANGE

EDIT
 文字を入力したとき DLGN_CHANGE

STATIC (dialog の引数には DLGN_STATICCLICKED をつけて下さい)
 クリックしたとき DLGN_CLICKED
 ダブルクリックされたとき DLGN_DOUBLECLICKED



例1
ret = dialog(1)
BUTTON(BS_PUSHBUTTON / BS_DEFPUSHBUTTON)が押されたときのみ制御を返します。

例2
ret = dialog(1 | DLGN_CLICKED)
例1に加え、BUTTON(BS_AUTORADIOBUTTON / BS_AUTOCHECKBOX)の状態が変更されたときも制御を返します。

例3
ret = dialog(1 | DLGN_CLICKED | DLGN_CHANGE)
例2に加え、EDIT, COMBOBOX 内で文字を入力したときにも制御を返します。

例4
ret = dialog(1, 100)
100ミリ秒で制御を返します。

参照    control  dlgvalue  dlgitemcmd  dlglistboxarray  dlgtext$  dlgenable  dlghwnd  dlgvisible  通知コード(DIALOG)


最新情報  TOP  マクロTOP