1.指定位置に(文字・罫線・指定フォントで)印刷する |
1.印刷位置設定用関数 2.フォントの(種類・サイズ・スタイル)設定用関数 3.指定位置に(文字・罫線)印刷する 4.フォントサイズとフォント幅について 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.印刷位置設定用関数 |
Private Sub Locate(X As Long, Y As Long, myStr As String) With Printer .ScaleMode = vbCharacters 'キャラクターモードに設定 .CurrentX = X '水平座標の設定 .CurrentY = Y '垂直座標の設定 End With Printer.Print myStr '指定位置に文字列を印刷(表示 End Sub 上記は、ScaleMode をキャラクターモードで設定しておりますが、ミリメートルやポイントに変更すれば、それぞれの単位で位置が指定できます。 このようなプロシージャを作っておくと何行目の何桁目に印刷と設定が簡単です。 又、場合によってはフォントの種類やサイズも同時にプロシージャに設定しておくと、便利になるかと思います。 ScaleMode については、下記を参考にして下さい。 ScaleMode プロパティ グラフィックスメソッドを使うとき、またはコントロールを配置するときに使うオブジェクトの座標系の単位を設定します。 値の取得も可能です。 構文 object.ScaleMode [= value]
|
2.フォントの(種類・サイズ・スタイル)設定用関数 |
Private Sub sFontSet(myObj As Object, FntName As Integer, FntSize _ As Integer, FntStyle As Integer) '================================================================ '* myObj = オブジェクト名(Form Or Printer 等) '* FntName = フォントの名前 '* FntSize = フォントサイズ '* FntStyle = フォントスタイル '* FntStyle=1 太字 FntStyle=10 斜体 '* FntStyle=50 消線 FntStyle=100 アンダーライン '* スタイルの組合せはそれぞれの数値の合計で指定 '* sFontSet 1,12,101 のように指定して使って下さい '* フォントはMS Pゴシックで12ポイントで太字でアンダーライン付 '================================================================ Dim intFStyle As Integer On Error Resume Next intFStyle = FntStyle With myObj 'フォント名を設定 Select Case FntName Case 0 .FontName = "MS ゴシック" Case 1 .FontName = "MS Pゴシック" Case 2 .FontName = "MS 明朝" Case 3 .FontName = "MS P明朝" Case Else .FontName = "MS ゴシック" End Select If FntSize <= 0 Or FntSize > 72 Then FntSize = 9 'フォントサイズのデフォルト設定 End If 'フォントサイズを設定 .FontSize = FntSize 'フォントスタイルを初期値に設定 .FontBold = False .FontItalic = False .FontStrikethru = False .FontUnderline = False '指定のフォントスタイルを組み合わせに設定 If intFStyle >= 100 Then .FontUnderline = True 'アンダーライン intFStyle = intFStyle - 100 End If If intFStyle >= 50 Then .FontStrikethru = True '取り消し線 intFStyle = intFStyle - 50 End If If intFStyle >= 10 Then .FontItalic = True '斜体 intFStyle = intFStyle - 10 End If If intFStyle = 1 Then .FontBold = True '太字 End If End With End Sub Private Sub Command1_Click() '関数使用例 Form1のところをPrinter に変えると印字 sFontSet Form1, 1, 12, 101 Locate Form1, 5, 2, "VBレスキュー-(花ちゃん)" sFontSet Form1, 3, 16, 111 Locate Form1, 5, 4, "VBレスキュー-(花ちゃん)" End Sub |
3.指定位置に(文字・罫線)印刷する |
Private Sub Command2_Click() '印字ずれを防ぐために等幅文字を指定 Printer.FontName = "MS 明朝" Printer.FontSize = 12 Locate 0, 0, "0行目の0桁目から印字します。" Locate 10, 4, "4行目の10桁目から印字します。" Locate 5, 8, "8行目の5桁目から印字します。 " Locate 5, 11, Right$(Space$(14) & Format$("1234567.89", "#,###.00"), 14) Locate 5, 12, Right$(Space$(14) & Format$("1234.56", "#,###.00"), 14) Locate 22, 11, Right$(Space$(14) & Format$("1234567.89", "#,###.00"), 14) Locate 22, 12, Right$(Space$(14) & Format$("1234.56", "#,###.00"), 14) Locate 5, 14, "1234.56" Locate 5, 15, "1234.56" Printer.DrawStyle = vbDashDot '線種を指定 Printer.DrawWidth = 5 '線の太さを指定 Printer.Line (5, 15)-(36, 15) '中間にラインを印字 Printer.EndDoc End Sub 上記を実行すれば、下記のような感じに印刷されるはずです。 基本的に、表示も印刷も設定は、同じです。 Printer.Line の Printer のところを Me.Line にすれば、Form に表示され、Picture1 にすれば、Picture1 に表示されます。 |
4.フォントサイズとフォント幅について |
尚、印刷位置のずれを防止するには、下記の3の倍数のポイントサイズ(半角2個が全角1個と同じ幅になる)のフォントを使用して下さい。 MS 明朝 及び MS ゴシック(等幅フォント) 文字ポイント 半角幅 全角幅 9 90 180 10 105 195 11 120 225 12 120 240 13 150 285 16 165 315 18 180 360 20 210 405 幅の単位 = twip 注意 MS P明朝 及び MS Pゴシックは文字により幅が違います。 フォントサイズ=.75 ポイント飛び(10ポイント=正しくは、9.75ポイントで 11ポイント=10.5ポイントです) |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
指定位置に印刷する 罫線を印刷する 指定のフォントで印刷する 等幅フォントについて スケールモード 印刷位置の単位設定 フォントサイズとフォント幅 |