レポート:10CPI (Characters Per Inch) による印刷 Hit Counter

対象バージョン :  97, 2000, 2002, 2003
最終更新日 : 2005/04/25 (オリジナル作成日:1997/04/24)


概 要 

 レポートで、1インチあたり10文字の印字を行う方法です。

 

解 説

 フォント等の設定では、実現ができないようなので、Report オブジェクトの Print メソッドを利用した Sub プロシージャです。

 

構 文

Call TenCPIPrint(Obj, Value, x, y)

引 数 内     容
obj 表示する Report オブジェクトを指定します。
Value 表示する文字列式を指定します。
x 表示する "Left/左位置" を示す数式を指定します。
単位は cm で、小数の使用が可能です。
y 表示する "Top/上位置" を示す数式を指定します。
単位は cm で、小数の使用が可能です。

 

Sub プロシージャ

Public Sub TenCPIPrint(argrpt As Report, argValue As Variant, _
    argX As Single, argY As Single)

Dim sngX As Single
Dim sngY As Single
Dim sngColWidth As Single
Dim sngChrWidth As Single
Dim intChr As Integer
Dim stChr As String

If IsNull(argValue) Or argValue = "" Then Exit Sub

argrpt.FontName = "明朝" ' 固定ピッチフォントがよいでしょう
argrpt.FontSize = 7 ' サイズは調整してください

' Twip 変換
sngX = argX * 567
sngY = argY * 567

For intChr = 1 To Len(argValue)
    stChr = Mid(argValue, intChr, 1)
    sngColWidth = LenB(StrConv(stChr, vbFromUnicode)) * 144
    sngChrWidth = argrpt.TextWidth(stChr)
    argrpt.CurrentX = sngX + (sngColWidth - sngChrWidth) / 2
    argrpt.CurrentY = sngY
    argrpt.Print stChr
    sngX = sngX + sngColWidth
Next
End Sub
 

使用例

 レポートの詳細セクションの "OnFormat/フォーマット時" のイベントプロシージャで、次のように設定します。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Call TenCPIPrint(Me, Me![金額], 5.5, 2.3)
End Sub

補 足

 

改訂履歴


目次へ戻る