我使用ActiveReports 9 Designer创建了一个部分报告。我需要根据标志设置水印。如果flag为ON,则应为该特定页面设置水印。如果标志为OFF,则水印应该没有。
我在组头中有标志文本框和水印图像。所以我想到了在GROUPHEADER1_BeforePrint of Report脚本中切换水印。
Sub GroupHeader1_BeforePrint
if(TxtFlg.text = "1") Then
rpt.Watermark = imgWaterMark.Image
else
rpt.Watermark = nothing
End If
End Sub
我的问题是 - 第一页正在跳过,它将从下一页继续。第1页水印显示在第2页,第2页水印显示在第3页,依此类推。为什么这样显示?
任何人都可以帮助我。提前致谢 。
答案 0 :(得分:1)
这是设计行为。 Watermark属性用于整个报表,并在呈现任何其他部分之前呈现。因此,当您在GroupHeader_Format事件中设置水印时,该页面的水印已经打印,因此无法更改。因此,Watermark将在下一页打印出来。现在,要解决您在第一页上呈现水印的问题,可以在ReportStart事件中进行设置。对于其他页面,您必须声明一个全局变量并设置水印,记住它将打印在下一页。
答案 1 :(得分:0)
如果我们想要根据条件在活动报告中显示水印,则报告的水印属性有点困难。相反,我们可以使用 DrawText 这与报告中的水印相似。
代码是这样的:
Sub GroupHeader1_BeforePrint
if(TxtFlg.text = "1") Then
Me.rpt.CurrentPage.ForeColor = Color.FromArgb(80, 128,128,128)
Me.rpt.CurrentPage.Font = New Font("Arial", 45F)
Me.rpt.CurrentPage.DrawText("DRAFT", 0.489F, 5F, 8, 2)
else
Me.rpt.CurrentPage.ForeColor = Color.FromArgb(80, 255, 255, 255)
Me.rpt.CurrentPage.Font = New Font("Arial", 20F)
Me.rpt.CurrentPage.DrawText("", 1.5F, 3F, 2, 2)
End If
End Sub