VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 印刷関係のメニュー
1.指定位置に(文字・罫線・指定フォントで)印刷する
2.ピクチャーの内容を印刷する
3.網掛け文字を表示及び印字
4.プリンターの指定方法
5.用紙サイズ・用紙の向き・用紙トレイ・印刷枚数・拡大縮小を指定する
6.プリンターの印刷余白及び用紙サイズを取得
7.関連付け起動によるファイルの印刷
8.[プリンターの設定]ダイアログボックスを表示する
9.その他上記以外の印刷関係のサンプル
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


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]

定数
設定値 内容
VbUser
0 ScaleHeight、ScaleWidth、ScaleLeft、ScaleTop の各プロパティのうち 1 つ以上が独自の値に設定されていることを示します。
VbTwips
1 (既定値)twip (論理インチあたり 1,440 twip、論理センチあたり 567 twip)。
VbPoints
2 ポイント (論理インチあたり 72 ポイント)。
VbPixels
3 ピクセル (画面またはプリンターの解像度の最小単位)。
VbCharacters
4 キャラクター (水平 = 1 単位あたり 120 twip、垂直 = 1 単位あたり 240 twip)。
VbInches
5 インチ
VbMillimeters
6 ミリメートル。
VbCentimeters
7 センチメートル。
VbHimetric 8
HiMetric
VbContainerPosition 9 コントロールの位置を決定するためにコントロールのコンテナーで使用する単位。
VbContainerSize 10 コントロールのサイズを決定するためにコントロールのコンテナーで使用する単位。
72ポイント=1インチ  1ポイント=1/72インチ          1 インチ = 72 ポイント = 1440 twip
1mm = 56.7twip     1ピクセル=15twip(画面の解像度による)  1ポイント=0.3528mm
1インチ=25.4mm     1twip=0.01763668mm           12ポイント=240twip =12/72インチ=4.23mm


このページのトップへ移動します。 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

 上記を実行すれば、下記のような感じに印刷されるはずです。
 print01_01

基本的に、表示も印刷も設定は、同じです。 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.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
指定位置に印刷する 罫線を印刷する 指定のフォントで印刷する 等幅フォントについて スケールモード 印刷位置の単位設定 フォントサイズとフォント幅




このページのトップへ移動します。