レポートの任意の位置に楕円を描写するお手本データベース

図5-5-1 テキストボックスに楕円を描写した例
このサンプルデータベースは、テキストボックスに表示されている順位に楕円を描写します。レポートのCircleメソッドを使用すると、レポートの任意の位置に円、楕円または円弧を描写することができます。また、描写した円を指定した色で塗りつぶすこともできます。
サンプルデータベース(CH5-5.mdb)では、以下のノウハウを習得することができます。
◆ レポートの任意の位置に円、楕円、円弧を描写する方法
◆ 円を指定した色で塗つぶす方法
◆ 印刷時、ダイナミックに表を描写する方法
● レポートに楕円を描写するサンプルデータベースを作成するには
1 Access を起動したら作業フォルダに、新規データベース CH5-5.mdbを作成します。
2 データベースウィンドウからレポート
をクリックしたら、一覧からデザインビューでレポートを作成するをダブルクリックします。レポートのデザインビューが表示されたら、ツールボックスからラベルのアイコン
をクリックしてページヘッダーに配置します。ラベルの標題には、“Print Circle”を入力します。
3 メニューから表示をクリックして、サブメニューを表示させたらグリッドをクリックして1cm間隔のグリッドを表示します。ツールボックスからテキストボックスのアイコン
をクリックしたら、詳細に配置します。テキストボックスのプロパティを表示させたら、左位置1cm、上位置0.4cm、幅2cm、高さ0.8cmに設定します。コントロールソースには、=”1位”を設定します。テキストボックスをコピーしたら、1cm間隔で4個のテキストボックスを貼り付けます。テキストボックスのコントロールソースには、=”2位”,=”3位”,=”4位”,=”5位”を設定します。

図5-5-2 レポートの詳細に5個のテキストボックスを配置した例
4 メニューからコードのアイコン
をクリックしてレポートモジュールを表示させます。CH5-5.mdbを開いたら、rptCircleのレポートモジュールをコピーして貼り付けます。レポートモジュールのソースコードは、リスト2-5-1を参照してください。また、CH5-5.mdbを開いたら、モジュールbasMyLibをインポートしておいてください。
5 レポートをrptCircleの名称で保存したら、メニューから印刷プレビューのアイコン
(Icon印刷プレビュー.tif)をクリックして確認します。1位、3位、4位、5位のテキストボックスに楕円が描写されているか確認します。また、3位の楕円は、淡い黄色、4位の楕円は赤色、5位の楕円は、水色で塗つぶされているか確認します。

図5-5-3 テキストボックスの順位に楕円を描写して印刷した例
6 レポートに楕円が表示されることを確認したら、Access を終了させます。
Sub 詳細_Print()イベントの処理
このイベントは、詳細の印刷時に実行されます。このイベントでは、レポートのCircleメソッドを使用して4個の楕円を描写しています。テキストボックス上に楕円を描写するには、Circleメソッドの引数として楕円の中心の座標位置(x,y)、楕円の半径(Radius)そして円の縦横比(Aspect)を指定します。尚、座標軸はTWIPの単位で指定します。1cmは、567TWIPSに相当します。
sngX = 2 * TWIP
sngY =
.ScaleHeight / 2
sngRadius =
.ScaleHeight / 2
Me.Circle
(sngX, sngY), sngRadius, , , , 0.8
楕円を塗つぶすには、FillStyleプロパティに0を設定して、FillColorプロパティにカラー値を設定します。カラー値は、RGB()関数を使用する方法と、直接カラー値を設定する方法があります。
.FillStyle = 0
.FillColor = RGB(255,
0, 0)
.FillColor = 14548991
リスト5-5-1 rptCircleのレポートモジュール
|
Option Compare Database Option Explicit Private Sub 詳細_Print(Cancel As Integer, FormatCount As Integer) Const TWIP = 567 ' tiwps per cm Dim sngX As Single Dim sngY As Single Dim sngRadius As Single
With Me sngX = 2 * TWIP sngY = .ScaleHeight / 2 sngRadius = .ScaleHeight / 2 Me.Circle (sngX, sngY), sngRadius, , , , 0.8
sngX = 8 * TWIP .FillColor = 14548991 .FillStyle = 0 Me.Circle (sngX, sngY), sngRadius, , , , 0.8
sngX = 11 * TWIP .FillColor = RGB(255, 0, 0) Me.Circle (sngX, sngY), sngRadius, , , , 0.8
sngX = 14 * TWIP .FillColor = RGB(0, 200, 200) Me.Circle (sngX, sngY), sngRadius, , , , 0.8 End With End Sub |