Private Sub pd_PrintPage(ByVal sender As Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) Dim w_FunctionName As String '関数名 Dim w_CurrentX1 As Short 'X座標 Dim w_CurrentY As Short 'Y座標 Dim printfont As Font 'フォント
Static wkcnt As Long 'カウント
w_FunctionName = "pd_PrintPage"
If (wkcnt = Nothing) Then wkcnt = 0 End If
For wkcnt = wkcnt To PrintCnt - 1
'文字列を描画します。 If (PrintData(wkcnt).prTask = PRINT_TASK.PRINT_STRING) Then
皆さま。お疲れ様です。
印刷の時の改ページについて教えて頂きたいのですが、
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim w_FunctionName As String '関数名
Dim w_CurrentX1 As Short 'X座標
Dim w_CurrentY As Short 'Y座標
Dim printfont As Font 'フォント
Static wkcnt As Long 'カウント
w_FunctionName = "pd_PrintPage"
If (wkcnt = Nothing) Then
wkcnt = 0
End If
For wkcnt = wkcnt To PrintCnt - 1
'文字列を描画します。
If (PrintData(wkcnt).prTask = PRINT_TASK.PRINT_STRING) Then
'座標設定
w_CurrentX1 = VB6.TwipsToPixelsX(PrintData(wkcnt).prCurrentX1)
w_CurrentY = VB6.TwipsToPixelsY(PrintData(wkcnt).prCurrentY)
'文字列を描画する。
e.Graphics.DrawString(PrintData(wkcnt).prString, _
printfont, _
Brushes.Black, _
w_CurrentX1, _
w_CurrentY, _
New StringFormat)
ElseIf (PrintData(wkcnt).prTask = PRINT_TASK.PRINT_NEWPAGE) Then
'改ページを行なう
e.HasMorePages = True
Exit For
Else
'何も行なわない
Exit Sub
End If
Next
''印刷物がないならページの終了を通知する。
If (wkcnt = PrintCnt) Then
'現ページで終了
e.HasMorePages = False
'カウントを初期化する。
wkcnt = Nothing
Else
'次データをカウントアップする。
wkcnt = wkcnt + 1
End If
'関数を終了する。
Exit Sub
End Sub
ボタンが押されるたびにデータを取得して、印刷する
作りにしているのですが、初回だけうまく改ページ
処理をおこなってくれるのですが、2回目以降になると、
改ページされずに、改ページ以降のデータが
すべて初期ページに印字されます。
デバッグで追ってみたのですが、
'現ページで終了
e.HasMorePages = False
で印刷が終了するはずなのに、再びPrintPageイベントが発生して、
「現在のソースコードの位置が表示できません」っていう
メッセージが出たりします。
なんらかのエラーがでているとはおもうのですが、つかめません。
同じような経験をされた方や対処方法を知っておられる方
助けてください。お願いします。
P.S
印刷終了後、使い終わったオブジェクトをしっかり
開放していないのが原因なのでしょうか・・・。