掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Printerオブジェクトの行間設定 (ID:102323)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> CurrentYで設定するということは、少しやってみましたが > 1行ずつずれてしまいます。それは、現状ScaleMode=vbCharacters > で設定しているからだと思われます。 vbCharacters であろうとなかろうと、特に関係ないと思いますよ。 たとえ、1行ずつずれてしまうような事があったとしても、CurrentY には 小数値も設定できますので、「1行ずつずれる」事が分かっているのであれば、 それを踏まえて、そこから -0.5 行なり、+0.3 行なりの補正を加えれば良いかと。 で、その「1行ずれ」ですが…もしかして、Tab 関数を併用していませんか? たとえば For n = 1 To 10 Printer.Print Tab(1); n, n; "TEST", Next などのように、Tab 関数によって次行送りが発生するようなケースにおいては、 既定の行間で描画されることになります。 もし、Tab関数などを使っているわけでも、データに改行等があるのでも無いなら、 Print メソッドの利用時に、末尾改行を抑制しているかどうかを確認してみてください。 一応サンプル。 Option Explicit Private Sub Form_Load() '行の高さ(%) HScroll1.Min = 50 HScroll1.Max = 200 HScroll1.Value = 100 HScroll1.LargeChange = 10 HScroll1.SmallChange = 1 'プレビュー代わりのPictureBox Picture1.ScaleMode = vbCharacters Picture1.Font.Size = 12 Picture1.FontTransparent = True '印刷用 Text1.Text = "一行目" & vbCrLf & "二行目" & vbCrLf & "終わり" Command1.Caption = "印刷" End Sub Private Sub HScroll1_Change() Caption = CStr(HScroll1.Value) & "%" Picture1.Refresh End Sub Private Sub HScroll1_Scroll() Caption = CStr(HScroll1.Value) & "%" Picture1.Refresh End Sub Private Sub Text1_Change() Picture1.Refresh End Sub Private Sub Picture1_Paint() Dim rows() As String rows = Split(Text1.Text, vbCrLf) Dim h As Single h = Picture1.TextHeight("X") * CSng(HScroll1.Value) / 100! Dim y As Single, s As Variant Picture1.Cls y = 0! For Each s In rows Picture1.CurrentY = y Picture1.CurrentX = 0! Picture1.Print Tab(1); s; y = Picture1.CurrentY + h Next End Sub Private Sub Command1_Click() Dim rows() As String rows = Split(Text1.Text, vbCrLf) Printer.ScaleMode = vbCharacters Dim h As Single h = Printer.TextHeight("X") * CSng(HScroll1.Value) / 100! Dim y As Single, s As Variant y = 0! For Each s In rows Printer.CurrentY = y Picture1.CurrentX = 0! Printer.Print s; y = Printer.CurrentY + h If y > Printer.ScaleHeight Then y = 0! Printer.NewPage End If Next Printer.EndDoc End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.