强制换页、换栏、换行

先看看下面两个属性:

BreakAfter: 用于决定在打印此对象之后,是否换行、换栏、换页
BreakBefore:用于决定在打印此对象之前,是否换行、换栏、换页。

这两个属性都是BreakEnum型枚举,有以下可选值:

Column: 另起一栏
Line:  另起一行
Page:  另起一页
None:  无动作

示例一

Dim doc As New PrintDoc '定义一个报表
Dim
s As String '定义字符变量
Doc.Columns.Add()
'增加第一栏
Doc.Columns.Add()
'增加第二栏
s =
"新华网绵阳5月16日电(记者孙承斌)16日上午,在四川抗震救灾的"
s = s &
"危急时刻,中共中央总书记、国家主席、中央军委主席胡锦涛乘飞机赶往四川"
s = s &
"省地震灾区,慰问灾区干部群众,看望奋战在抗震救灾第一线的部队官兵、公"
s = s &
"安民警和医护人员,指导抗震救灾工作。"
For
i As Integer = 1 to 2
   
Dim rt As New prt.RenderText '定义一个文本对象
    rt.Text = s
'设置文本对象的内容
    rt.Style.TextIndent =
9 '首行缩进9毫米
    rt.Style.LineSpacing =
150 '1.5倍行距
    rt.BreakAfter = prt.BreakEnum.Column
'打印之后另起一栏
    doc.Body.Children.Add(rt)
'将文本对象加入到报表
Next

doc.Preview()
'预览

可以看到,两个文本对象被打印在不同的分栏:

 

需要注意的是,如果给打印对象指定了坐标位置,那么其BreakAfter和BreakBefore属性是失效的;此时为了强制换页,我们可以加入一个RenderEmpty对象,RenderEmpty是一个空对象,不会打印任何内容;设置RenderEmpty对象的BreakAfter或BreakBefore属性,不指定其坐标,加入到报表中,即可实现强制换页、换栏,换行。

示例二

例如下面的代码,由于所有的打印对象都需要指定坐标位置,所以只有通过增加一个RenderEmpty对象来控制换页:

Dim doc As New PrintDoc() '定义一个报表
Dim
rt As prt.RenderText '定义一个文本对象
Dim
rm As prt.RenderEmpty '定一个空对象
For
n As integer =1 To 2
    rm = new prt.RenderEmpty
'定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page
'打印前换页
    doc.Body.Children.Add(rm)
'加入到报表中

    For
i AS integer = 1 To 5
        rt = New prt.RenderText()
'创建文本对象
        rt.Text =
"Hello Foxtable " & i '设置文本对象的内容
        rt.Width =
"Auto" '自动设置宽度
        rt.X = i *
10 + 20 '指定水平位置
        rt.y = i *
10 + 20 '指定垂直位置
        rt.Style.Borders.All = New prt.Linedef(
1, Color.Red) '设置边框
        doc.Body.Children.Add(rt)
'将文本对象加入到报表
    Next
Next

doc.Preview()
'预览

 

 


本页地址:http://www.foxtable.com/webhelp/topics/1196.htm