エディットボックスの使用

エディットボックスは,アプリケーションがいつでもテキストを書き込むことができる領域です。しかし,スタティックテキストとは異なり,ユーザーはエディットボックスをマウスでクリックして,入力を行うことができます。次の文はエディットボックスに書き込みを行います。

	CHARACTER(20) text /"Send text"/
	retlog = DLGSET (dlg, IDC_EDITBOX1, text)

次の文は,エディットボックス内の文字列を読み込みます。

	retlog = DLGGET (dlg, IDC_EDITBOX1, text)

ユーザーがエディットボックスに入力する値は,つねに文字列として取り出されるので,アプリケーションはこれらの文字列を適切なデータとして解釈しなくてはなりません。たとえば,ユーザーが入力した数値は,アプリケーションからは文字列として扱われます。同じように,アプリケーションがエディットボックスに書き込んだ数値は文字列として送られます。数値と文字列の間で変換を行うには,内部的な読み取りおよび書き出し文で型変換を行います。

エディットボックス内の数値を読み取るには,DLGGETDLGGETCHAR で文字列として読み取り,希望の数値型 (整数や実数など) の変数を使って内部読み取りを実行します。次に例を示します。

	REAL    x
	LOGICAL retlog
	CHARACTER(256) text
	retlog = DLGGET (dlg, IDC_EDITBOX1, text)
	READ (text, *) x

この例では,実数の変数 x に,エディットボックスに入力された値が,小数部分も含めて代入されます。

複素数と倍精度複素数値の読み取りも同じように行いますが,アプリケーションはエディットボックス内の文字列を実部と虚部に分けなくてはなりません。これは,実部と虚部を表す 2 つのエディットボックスを用意するか,ユーザーに 2 つの部分の間に区切り文字を入力させて,変換を行う前に区切り文字を含んでいる文字列の解析を行うことで実現することができます。区切り文字としてコンマ (,) を使えば,文字列の解析を行わなくても,2 つの実数形編集記述子を使って文字列を読み取ることができます。

エディットボックスに対して数値を書き込むには,文字列に対して内部的な書き出しを行った上で,DLGSET を使ってエディットボックスに文字列を送信します。次に例を示します。

	INTEGER  j
	LOGICAL  retlog
	CHARACTER(256) text
	WRITE (text,'(I4)') j
	retlog = DLGSET (dlg, IDC_EDITBOX1, text)

エディットボックス内の文字長を得たり,設定するには DLG_TEXTLENGTH コントロール指標を使います。文字長は,以下の場合に自動的に更新されます。

後続の空白に意味があるテキストを設定したい場合,必要な文字長を設定するための DLG_TEXTLENGTH を持つ DLGSET に続いてテキストを設定する DLGSET を呼び出します。

エディットボックス中の現在位置を得たり,設定したりするには DLG_POSITION コントロール指標を使います。カーソル位置の設定は,エディットボックスでの現在のどんな選択も取り消してしまうことに注意してください。