DLGSETSUB

実行時関数:自分のコールバック・サブルーチンをダイアログ・コントロールとダイアログボックスに割り当てます。

モジュール: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

関連情報

DLGGET,DLGSET

例

	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