レポートには直線や四角形のコントロールはあるものの、円のコントロールがありません。
Excelなどで作った図形をコピペするという手もありますが、ここではVBAのCirlceメソッドにより描く例をみてみます。
なお、以下の例ではページヘッダに描画するようにしていますので、ページヘッダのあるレポートを作っておくことが必要です(「レコードソースの値に基づく描画」を除く)。
描画例
基本的な描画(円と楕円)
ページヘッダのあるレポートを作り、レポートモジュールに次のように記します。
Option Compare Database Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) '1個目 中心座標 半径 赤色 Me.Circle (2000, 1500), 500, RGB(255, 0, 0) '2個目 中心座標 半径 緑色 縦の拡大率 Me.Circle (4000, 1500), 500, RGB(0, 255, 0), , , 1 / 2 End Sub
このようにCircleメソッドにより円を描くことができます。中心点と半径の座標だけでも線は引けますが、ここでは線色も指定しています。
座標はセクションの左上が起点(0,0)で、正の方向は右(x座標)及び下(y座標)です。単位はtwipです。
線色は0(黒)から16777215(白)までの数値で指定することができます。この例のようにRGB関数を使うと指定が容易になります。
また、2つ目の円では最後のパラメータで縦横比(縦/横)も指定しています。これにより楕円を描くことができます。
印刷プレビューです。
Stepによる座標指定
上記例と同様に、今度は次のように記します。
Option Compare Database Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) CurrentX = 1500 CurrentY = 1500 '1個目 左上基準 赤色 Me.Circle (2000, 2000), 500, RGB(255, 0, 0) '2個目 CurrentX,Y基準 緑色 Me.Circle Step(2000, 2000), 500, RGB(0, 255, 0) End Sub
1個目の円は最初の例と同様に中心点を指定しています。
2個目は、中心点の指定の際にStepを記すことにより、事前にCurrentX とCurrentYにより指定した座標を基準とする座標指定を行っています。
印刷プレビューです。
線種指定
レポートのDrawStyleプロパティにより線種を指定することもできます。
Option Compare Database Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) 'DrawStyleで線種指定 5は透明 Me.DrawStyle = 0 Me.Circle (1500, 1500), 450 Me.DrawStyle = 1 Me.Circle (2500, 1500), 450 Me.DrawStyle = 2 Me.Circle (3500, 1500), 450 Me.DrawStyle = 3 Me.Circle (4500, 1500), 450 Me.DrawStyle = 4 Me.Circle (5500, 1500), 450 Me.DrawStyle = 5 Me.Circle (6500, 1500), 450 Me.DrawStyle = 6 Me.Circle (7500, 1500), 450 End Sub
印刷プレビューです。
DrawStyleの値は左から順に0~6となっています。
線幅指定
レポートのDrawWidthプロパティにより
Me.DrawWidth = 30
といったように線幅を指定することが可能です。ただし、ちょっと太くすると線種の指定にかかわらず見た目が実線になってしまいますので注意してください。
実例はここでは省略しますが下記の例(線幅・塗り色・塗りパターンの組み合わせ)で使用しています。
塗りパターン指定
レポートのFillStyleプロパティにより円の内部の塗りのパターンを指定することもできます。
Option Compare Database Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) 'FillStyleで塗りパターン指定 Me.FillStyle = 0 Me.Circle (1500, 1500), 450 Me.FillStyle = 1 Me.Circle (2500, 1500), 450 Me.FillStyle = 2 Me.Circle (3500, 1500), 450 Me.FillStyle = 3 Me.Circle (4500, 1500), 450 Me.FillStyle = 4 Me.Circle (5500, 1500), 450 Me.FillStyle = 5 Me.Circle (6500, 1500), 450 Me.FillStyle = 6 Me.Circle (7500, 1500), 450 Me.FillStyle = 7 Me.Circle (8500, 1500), 450 End Sub
印刷プレビューです。
FillStyleの値は左から順に0~7となっています。
線幅・塗り色・塗りパターンの組み合わせ
DrawWidthプロパティによる線幅指定、FillColorプロパティによる塗色指定、FillStyleプロパティによる塗りパターンを組み合わせた例です。
Option Compare Database Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) '線幅指定 Me.DrawWidth = 30 '塗り色指定 Me.FillColor = RGB(191, 191, 191) 'ベタ塗り指定 Me.FillStyle = 0 ' 塗り色と異なる線色指定 Me.Circle (1500, 1500), 450, RGB(63, 127, 127) Me.Circle (2500, 1500), 450, RGB(127, 63, 127) Me.Circle (3500, 1500), 450, RGB(127, 127, 63) End Sub
印刷プレビューです。
レコードソースの値に基づく描画
レコードソースになっているテーブルやクエリの値を参照し、その値に応じた図形を描画する例です。
このようなクエリをレコードソースとするレポートを作成し、人口の大きさに応じて大きくなる円を表示するものとします。
レポートモジュールの内容は次のようになります。
Option Compare Database Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Me.FillStyle = 0 Me.FillColor = RGB(0, 192, 192) Me.Circle (6000, 630), 1.5 * Sqr(Me.人口), RGB(0, 192, 192) End Sub
半径に「Sqr(Me.人口)」が掛かっていることで、人口が多いほど半径が大きくなるようになっています。
印刷プレビューです。
人口の値に応じて大きくなる円が描かれています。
Circleメソッドの構文
expression.Circle [Step] (中心点x , 中心点y),半径,[,色,始点,終点,縦横比]
expressionにはレポートオブジェクトを記します。
Stepを記すことでCurrentX,CurrentYを基準とする座標の指定を行うことができます。省略するとセクション左上端が基準となります。
座標と半径の単位はtwipです(1in=1440twip。1cmは567twipに相当します)。
色は0(黒)から16777215(白)までの値で指定します。上記例のようにRGB関数を用いるのが便利です。
縦横比は楕円を描く際に指定します。「縦/横」の比率を指定することにより、横幅はそのままで、縦の高さを変化させることができます。
なお、始点と終点は弧や扇形を描く際に指定します。これについては次の記事を参照してください。
www.accessdbstudy.net