実行時関数:自分のコールバック・サブルーチンをダイアログ・コントロールとダイアログボックスに割り当てます。
モジュール:USE DFLOGM
形式
result = DLGSETSUB (dlg, controlid, value [, index])
dlg
(入力) 構造型 DIALOG。ダイアログボックス・パラメタを含みます。構造型 DIALOG の成分は,PRIVATE 属性で定義され,ユーザーが変更したり,個別に参照することはできません。
controlid
(入力) 整数型。ダイアログボックス内のコントロールの識別子を指定します。コントロールに対するシンボル名または識別子番号のどちらでも指定することができます。両方ともインクルード・ファイル (.FD 拡張子) に一覧表示されています。
value
(入力) EXTERNAL。コールバック・イベントが発生した時に呼び出されるルーチンの名前。
index
(省略可能,入力) 整数型。コールバック・イベントが発生した時にどのコールバック・ルーチンが実行されるかを指定します。コントロールが複数のコールバック・ルーチンを持つ場合に必要になります。
結果
結果の型は LOGICAL(4) です。成功すれば .TRUE. が返され,そうでなければ .FALSE. が返されます。
コールバック・イベントが発生した時 (たとえば,チェックボックスを選択した時),そのコールバック・イベントに関連するコールバック・ルーチンが呼び出されます。呼び出されるサブルーチンを DLGSETSUB を使って指定します。すべてのコールバック・ルーチンは,以下のインタフェースを持っていなければなりません。
SUBROUTINE callbackname (dlg, control_id, callbacktype)
!DEC$ ATTRIBUTES DEFAULT :: callbackname
callbackname
コールバック・ルーチンの名前。
dlg
ダイアログボックスを引用し,ダイアログ・コントロールの値をコールバックが変更することを許可します。
control_id
コールバックを引き起こしたコントロールの名前。
callbacktype
どのコールバックが発生したかを示します。(例:DLG_CLICKED,DLG_CHANGE,または DLG_DBLCLICK)
control_id と callbacktype パラメタにより,複数のコントロールから複数のコールバックで使用することができる単一のサブルーチンを書くことができます。一般的に,論理グループの比較を行うコントロールにこれを使用することができます。同じコントロールを持つ複数のコールバック・ルーチンを関連付けることもできますが,使用するコールバック・ルーチンを識別するための index パラメタを使わなければなりません。
control_id は,ダイアログボックスの識別子でもあります。ダイアログボックスは,2 つの callbacktype,DLG_INIT と DLG_SIZECHANGE,をサポートしています。DLG_INIT コールバックは,callbacktype DLG_INIT でダイアログボックスが作成された後に直ちに実行され,callbacktype DLG_DESTROY でダイアログボックスが破壊される前に直ちに実行されます。DLG_SIZECHANGE は,ダイアログの大きさが変更された時に呼び出されます。
コントロールのコールバック・ルーチンは,コントロールの値がユーザーの動作を基に更新された後に呼び出されます。
2 つ以上のコントロールが同じ controlid を持つ場合,DLGSETSUB 操作でこれらのコントロールを使うことはできません。この場合,関数は .FALSE. を返します。
詳細は,「ダイアログ・コールバック・ルーチン」を参照してください。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
PROGRAM DLGPROG USE DFLOGM INCLUDE "MYDLG.FD" TYPE (dialog) mydialog LOGICAL retlog INTEGER return EXTERNAL RADIOSUB retlog = DLGINIT(IDD_mydlg, dlg) retlog = DLGSETSUB (mydialog, IDC_RADIO_BUTTON1, RADIOSUB) retlog = DLGSETSUB (mydialog, IDC_RADIO_BUTTON2, RADIOSUB) return = DLGMODAL(dlg) END SUBROUTINE RADIOSUB( dlg, id, callbacktype ) USE DFLOGM TYPE (dialog) dlg INTEGER id, callbacktype INCLUDE 'MYDLG.FD' CHARACTER(256) text INTEGER cel, far, retint LOGICAL retlog SELECT CASE (id) CASE (IDC_RADIO_BUTTON1) ! ユーザーがラジオボタン 1 を選択しました。 ! それに従ってテキストを変更します。 text = 'Statistics Package A' retlog = DLGSET( dlg, IDC_STATICTEXT1, text ) CASE (IDC_RADIO_BUTTON2) ! ユーザーがラジオボタン 2 を選択しました。 ! それに従ってテキストを変更します。 text = 'Statistics Package B' retlog = DLGSET( dlg, IDC_STATICTEXT1, text ) END SELECT END SUBROUTINE RADIOSUB