在 ActiveReports 中设置水印

Set Watermark in ActiveReports

我使用 ActiveReports 9 Designer 创建了一个部分报告。我需要根据标志设置水印。如果标志为 ON,则应为该特定页面设置水印。如果标志为 OFF,则水印应该为空。

我在组 header 中有标志文本框和水印图像。所以我想到了在报告脚本的 GROUPHEADER1_BeforePrint 中切换水印。

Sub GroupHeader1_BeforePrint
    if(TxtFlg.text = "1") Then
        rpt.Watermark = imgWaterMark.Image
    else
        rpt.Watermark = nothing
    End If
End Sub

我的问题是 - 第一页跳过,从下一页继续。第 1 页水印显示在第 2 页,第 2 页水印显示在第 3 页,依此类推。为什么会这样显示?

谁能帮帮我。提前致谢 。

这是设计行为。 Watermark 属性 用于整个报告,并在呈现任何其他部分之前呈现。因此,当您在 GroupHeader_Format 事件中设置水印时,该页面的水印已经打印,因此无法更改。因此,水印打印在下一页上。现在,要解决在第一页上呈现水印的问题,您可以在 ReportStart 事件中设置它。对于其他页面,您必须声明一个全局变量并设置水印,请记住它会打印在下一页上。

如果我们想根据条件在活动报告中显示水印,使用报告的水印 属性 有点困难。相反,我们可以使用 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