Foxtable(狐表)用户栏目专家坐堂 → 专业报表如何强制换页?谢谢


  共有18948人关注过本帖树形打印复制链接

主题:专业报表如何强制换页?谢谢

帅哥哟,离线,有人找我吗?
程兴刚
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/8/24 10:49:00 [显示全部帖子]

贴出您的原代码!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/8/24 10:52:00 [显示全部帖子]

Dim rm As prt.RenderEmpty '定一个空对象
if i =20 'i为您的当前行位置

    rm = new prt.RenderEmpty '定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page
'打印前换页
    doc.Body.Children.Add(rm)
'加入到报表中

end if


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/8/24 11:07:00 [显示全部帖子]

我原来在对专业报表的表格进行换页的方法很笨,将纸张的高度减去页眉、页脚、页面标题行的高度和上下编剧,剩下的尺寸除以指定的行数(假定),得到的值为行高,这样,他自然就在N个21行的位置自动换页了,也就无需考虑总行数多少或分多少页了!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/8/24 12:53:00 [显示全部帖子]

需要注意的是,如果给打印对象指定了坐标位置,那么其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()
'预览

 

 

[此贴子已经被作者于2011-8-24 12:53:53编辑过]

 回到顶部