スクロールバーの使用

スクロールバーでは,ユーザーはスライドを上下または左右に操作することで入力を決定します。アプリケーションはスクロールバーの範囲を設定し,スライド位置を数値として解釈することができます。この数値をユーザーに対して表示したい場合,その数値をスタティックテキスト・コントロールかエディットボックス・コントロールに (文字列として) 送る必要があります。

スクロールバーの範囲の下限と上限の設定は,DLGSET または DLGSETINT を使って,コントロール指標 DLG_RANGEMINDLG_RANGEMAX を設定することによって行います。基本値は 1 と 100 です。次に例を示します。

	LOGICAL retlog
	retlog = DLGSET (dlg, IDC_SCROLLBAR1, 212, DLG_RANGEMAX)

スライドの位置を取得するには,DLGGET または DLGGETINT を使って,コントロール指標 DLG_POSITION を取得します。次に例を示します。

	INTEGER slide_position
	retlog = DLGGET (dlg, IDC_SCROLLBAR1, slide_position, DLG_POSITION)

また,コントロール指標 DLG_BIGSTEP を設定することで,垂直スクロールバーではスライドの上下,水平スクロールバーではスライドの左右にある空白の領域をユーザーがクリックした時の移動量を設定することができます。次に例を示します。

	retlog = DLGSET (dlg, IDC_SCROLLBAR1, 20, DLG_BIGSTEP)

ユーザーがスクロールバーの矢印ボタンをクリックした場合,位置はつねに 1 づつ増減されます。

スクロールバーが報告できる最大値 (DLG_POSITION,つまり最大スクロール可能位置) は,ページの大きさ (DLG_BIGSTEP) に依存します。スクロールバーが 1 以上のページの大きさを持っていれば,最大スクロール可能位置は,最大範囲値 (DLG_RANGEMAX または DLG_RANGE) よりも小さくなります。最大スクロール可能位置を計算するために,次の式を使うことができます。

	MaxScrollPos = MaxRangeValue - (PageSize - 1) 

たとえば,スクロールバーが DLG_RANGEMAX = 100 (100 は DLG_RANGEMAX の基本値) と DLG_BIGSTEP = 10 (10 は DLG_BIGSTEP の基本値) を持っているとすると,最大 DLG_POSITION は 91 (100 - (10 - 1)) になります。

Visual Fortran V5 (と Microsoft Fortran PowerStation V4) ダイアログ手続のスクロールバー の最大 DLG_POSITION は,最大範囲値 (DLG_RANGE) と同じ値です。

これにより,可変スクロールバーの実装が可能になります。スクロールバー (または "thumb") の大きさは,DLG_BIGSTEP の値で決定され,データのページを表わします (つまり,ウィンドウ中で見えるデータの量)。

ユーザーがスクロールバーのシャフトをクリックすると,次 (または前) のページが表示されます。Thumb の頂点 (垂直スクロールバー) または左端 (水平スクロールバー) は,スクロールバーの位置 (DLG_POSITION) を表わします。

Thumb の大きさは,現在見えているデータの量を表わします。Thumb の最小値があるので,利便性に影響しません。スクロールバーが最大位置にある時,位置はウィンドウで見える最後のページのデータを表わすデータの位置を表わしています。スクロールバーの頂点 (または左端) がシャフトの中間点にあるとき,DLG_POSITION は範囲の中間点でデータの中間点がウィンドウの頂点に表示されます。