tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルReportDocumentを使用して連続用紙の印刷
記事No11065
投稿日: 2013/03/02(Sat) 00:12
投稿者かっちゃん
いつもお世話になり大変助かっております。
VB2010の印刷についてお願いいたします

VB2010からReportDocument(名前:PrtDocument.)を使っての連続帳票を印刷しております
連続帳票は10インチで6枚のラベルがセットになっております。
印刷はできているのですが、終了すると改ページ(10インチ分)してしまいます。
データが1枚しかなくても改ページしてしまうので、改ページせずに、印刷したところで
用紙を止めたいのですが、どのようなロジックにしたらよろしいでしょうか
プリンターはエプソンのVP-700で用紙設定は10 X 10にしてあります

KakuteiDt:データセット
  Hinmei       No
   AAA        11111
     BBB        22222
     CCC        33333
       |            |
       |            |

  Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
    PrtDocument.Print()
  End Sub

  Private Sub PrtDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrtDocument.PrintPage
    Dim f As New Font("MS明朝", 10.5, FontStyle.Bold)  ' フォント
    Dim LineHeight As Single = f.GetHeight(e.Graphics)   '1行の高さ
    Dim X As Integer = e.MarginBounds.Left '文字列の描画を開始する縦位置
    Dim Y As Integer = e.MarginBounds.Top  '文字列の描画を開始する横位置
    Dim dtRow As DataRow() = KakuteiDt.Select()
    X = 60
    Y = 0

    For Each row As DataRow In dtRow
      ' 印刷
        e.Graphics.DrawString(row.Item("Hinmei").ToString, f, Brushes.Black, X, Y)
        e.Graphics.DrawString(row.Item("No").ToString, f, Brushes.Black, X, Y)
        Y += LineHeight '縦位置を1行分次に進ませる。
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y += LineHeight
        Y = Y - 2        '縦位置微調整
    Next
    e.HasMorePages = False
  End Sub

 よろしくお願いいたします。
  

[ツリー表示へ]
タイトルRe: ReportDocumentを使用して連続用紙の印刷
記事No11066
投稿日: 2013/03/02(Sat) 02:46
投稿者VBレスキュー(花ちゃん)
何の為に途中で止めたいのか解りませんが、ページ印刷が Windows の仕様ですので無理かと。
特に、ReportDocument を使って印刷設定をしているなら尚更です。

Win32 API を使って印刷設定をすれば、1行印刷ができるようですが、VB2005 以降では
試した事もないし簡単にはいかないかと思います。

それより、手で巻き戻した方が簡単ではないですか?
印刷位置等の関連から途中で止めたいと言う事なら印刷設定で、1枚目の印刷、2枚目の印刷
と言うように選択できるようにしておけば済む事ではないでしょうか?
(昔、フロッピーのラベル印刷には上記のような方法を取っていました。)

私は、ページプリンターでラベルを印刷する場合、よく使用する分をついでに印刷するように
していました。
    

[ツリー表示へ]
タイトルRe^2: ReportDocumentを使用して連続用紙の印刷
記事No11067
投稿日: 2013/03/03(Sun) 17:01
投稿者かっちゃん
> 何の為に途中で止めたいのか解りませんが、ページ印刷が Windows の仕様ですので無理かと。
> 特に、ReportDocument を使って印刷設定をしているなら尚更です。
>
> Win32 API を使って印刷設定をすれば、1行印刷ができるようですが、VB2005 以降では
> 試した事もないし簡単にはいかないかと思います。
>
> それより、手で巻き戻した方が簡単ではないですか?
> 印刷位置等の関連から途中で止めたいと言う事なら印刷設定で、1枚目の印刷、2枚目の印刷
> と言うように選択できるようにしておけば済む事ではないでしょうか?
> (昔、フロッピーのラベル印刷には上記のような方法を取っていました。)
>
> 私は、ページプリンターでラベルを印刷する場合、よく使用する分をついでに印刷するように
> していました。

ありがとうございました。
手で巻き戻すようにします。
何とかしようと色々苦労して時間を費やしていましたので、
大変参考になりました。
今後もよろしくお願いいたします。    

[ツリー表示へ]