この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
7.4.7 顧客情報の印刷処理
●印刷プレビューフォームが表示されたときの処理
26〜53行目は,スクロールバーの設定値を変更し,PicDocピクチャボックスの位置を変更する箇所である。
Fig.7-46にも示したが,PicDocピクチャボックスはPicPreviewピクチャボックスの上に載っており,その表示位置を変更することで,一部をPicPreviewピクチャボックスから覗けるようにする(Fig.7-50)。したがって,PicDocピクチャボックスの高さ(PicDoc.Height)からPicPreviewピクチャボックスの高さ(PicPreview.Height)を引いた値だけ垂直スクロールできれば,PicDocピクチャボックスに描画されている縦方向の全領域を表示できることになる。同様に,PicDocピクチャボックスの幅(PicDoc.Width)からPicPreviewピクチャボックスの幅(PicPreview.Width)を引いた値だけスクロールできれば,PicDocピクチャボックスに描画されている横方向の全領域を表示できる。そこで,このスクロール範囲の値をVScroll垂直スクロールバーとHScroll水平スクロールバーに設定する。この処理を実行しているのが,27〜33行目である。スクロールバーの最小値はMinプロパティで,最大値はMaxプロパティで,その時点における値はValueプロパティで,それぞれ設定する。
Fig.7-50 PicDocピクチャボックスとPicPreviewピクチャボックスとの関係

35〜49行目は,もし,計算して求めたスクロールバーの最大値が0以下になったならば,スクロールバーを淡色表示(ディスエブル)にし,使えないようにするための処理である。スクロールバーの最大値の計算結果が0以下になるということは,PicDocピクチャボックスのほうがPicPreviewピクチャボックスよりも小さいことを意味している。この場合,スクロールさせる必要はない(Fig.7-50を参照)。よって,スクロールバーを淡色表示にして使えないようにしたのである。
また,このときLargeChangeプロパティとSmallChangeプロパティを使い,スクロールバーの増減量を設定している。LargeChangeプロパティとSmallChangeプロパティは,それぞれスクロールバーのページアップとページダウンの指示部を押したときに増減する量,スクロールアップとスクロールダウンの指示部を押したときに増減する量である(Fig.7-51)。今回は,39行目と47行目にあるようにLargeChangeプロパティはスクロール値の最大値の1/10に,40行目と48行目にあるようにSmallChangeプロパティはスクロール値の最大値の1/20に,それぞれ設定した。この値は筆者が適当に決めた値であり,特に設定の指針があるわけではない。単純に,だいたいページアップやページダウンの指示部を10回ぐらい,スクロールアップやスクロールダウンの指示部を20回ぐらいクリックすれば,プレビュー画面全体を参照できるようにしただけの話で,明確な設定値の基準があるわけではない。
Fig.7-51 スクロールバー

53行目は,PicDocピクチャボックスの表示位置をMoveメソッドを使って変更している箇所である。Fig.7-50に示したように,スクロールバーで指定された値だけPicDocピクチャボックスを負の方向に移動させて表示すれば,スクロールを実現することができる(ただし,この時点では,29行目と33行目でスクロールバーの値を示すValueプロパティに0を格納しているため,実際には,単純に左上に揃えられて表示されることになる)。
| 44/134 |
