在ActiveReports中设置水印

时间:2017-02-20 05:09:27

标签: vb.net activereports

我使用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页,依此类推。为什么这样显示?

任何人都可以帮助我。提前致谢 。

2 个答案:

答案 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