| レポート:10CPI (Characters Per Inch) による印刷 |
|
対象バージョン : 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
補 足
改訂履歴