如何使用 ActiveReport SystemPrinter 知道打印任务已中止?
How to know the print task is aborted using ActiveReport SystemPrinter?
我是 ActiveReport 的新手。
我有一个使用 ActiveReport 2.0 的遗留 VB6 代码。
打印流程如下(代码为VB,ar的初始化未显示)
Dim ar as DDActiveReports2.ActiveReport
Dim aborted As Boolean
aborted = False
ar.Printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
ar.Printer.StartPage()
If ar.Printer.Status = DDActiveReports2.JobStatus.ddJSAborted Then
ar.Printer.AbortJob()
aborted = True
Exit For
End If
ar.Printer.PrintPage(ar.Pages(i), left, top, width, height)
ar.Printer.EndPage()
Next
If Not Aborted Then
ar.Printer.EndJob()
End If
我正在尝试将其迁移到 ActiveReport for .NET。经过一些研究,我发现这里最好的替换是 ActiveReports.SystemPrinter。迁移后的代码可能如下所示(未显示 ar 的初始化),
Dim ar As ActiveReports.Document.SectionDocument
Dim aborted As Boolean = False
Dim printer As New ActiveReports.SystemPrinter
printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
printer.StartPage()
If ??? Then
printer.AbortJob()
aborted = True
Exit For
End If
ar.Pages(i).Draw(printer.Graphics, New RectangleF(left, top, width, height))
printer.EndPage()
Next
If Not Aborted Then
printer.EndJob()
End If
但是,我在 ActiveReport2 中找不到 printer.Status,也无法知道打印中止状态 DDActiveReports2.JobStatus.ddJSAborted。
我不太确定 DDActiveReports2.JobStatus.ddJSAborted 到底是什么,我猜用户可能会在 Windows 打印任务 window 中取消打印。取消后,程序将取消所有剩余页面。
但是,这似乎不能在.NET 中完成?我错过了什么吗?
请帮忙
谢谢。
.NET 版本中的 SectionDocument class 具有 PrintAborted 事件处理程序。
这是一个代码示例:
进口GrapeCity.ActiveReports
导入GrapeCity.ActiveReports.文档
Dim WithEvents my_document As SectionDocument
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
my_document = New SectionDocument()
my_document.Load(ms)
my_document.Print(False)
End Sub
Private Sub PrintAborted(sender As Object, e As EventArgs) Handles my_document.PrintAborted
MsgBox("PrintAborted")
End Sub
请不要忘记将项目中的引用添加到 GrapeCity.ActiveReports.Extensibility.dll 和 GrapeCity.ActiveReports.Viewer.Win.dll
谢谢,
我是 ActiveReport 的新手。
我有一个使用 ActiveReport 2.0 的遗留 VB6 代码。 打印流程如下(代码为VB,ar的初始化未显示)
Dim ar as DDActiveReports2.ActiveReport
Dim aborted As Boolean
aborted = False
ar.Printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
ar.Printer.StartPage()
If ar.Printer.Status = DDActiveReports2.JobStatus.ddJSAborted Then
ar.Printer.AbortJob()
aborted = True
Exit For
End If
ar.Printer.PrintPage(ar.Pages(i), left, top, width, height)
ar.Printer.EndPage()
Next
If Not Aborted Then
ar.Printer.EndJob()
End If
我正在尝试将其迁移到 ActiveReport for .NET。经过一些研究,我发现这里最好的替换是 ActiveReports.SystemPrinter。迁移后的代码可能如下所示(未显示 ar 的初始化),
Dim ar As ActiveReports.Document.SectionDocument
Dim aborted As Boolean = False
Dim printer As New ActiveReports.SystemPrinter
printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
printer.StartPage()
If ??? Then
printer.AbortJob()
aborted = True
Exit For
End If
ar.Pages(i).Draw(printer.Graphics, New RectangleF(left, top, width, height))
printer.EndPage()
Next
If Not Aborted Then
printer.EndJob()
End If
但是,我在 ActiveReport2 中找不到 printer.Status,也无法知道打印中止状态 DDActiveReports2.JobStatus.ddJSAborted。
我不太确定 DDActiveReports2.JobStatus.ddJSAborted 到底是什么,我猜用户可能会在 Windows 打印任务 window 中取消打印。取消后,程序将取消所有剩余页面。
但是,这似乎不能在.NET 中完成?我错过了什么吗?
请帮忙
谢谢。
.NET 版本中的 SectionDocument class 具有 PrintAborted 事件处理程序。 这是一个代码示例:
进口GrapeCity.ActiveReports
导入GrapeCity.ActiveReports.文档
Dim WithEvents my_document As SectionDocument
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
my_document = New SectionDocument()
my_document.Load(ms)
my_document.Print(False)
End Sub
Private Sub PrintAborted(sender As Object, e As EventArgs) Handles my_document.PrintAborted
MsgBox("PrintAborted")
End Sub
请不要忘记将项目中的引用添加到 GrapeCity.ActiveReports.Extensibility.dll 和 GrapeCity.ActiveReports.Viewer.Win.dll
谢谢,