Foxtable(狐表)用户栏目专家坐堂 → 请教,专业报表如何做"分隔线"


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

主题:请教,专业报表如何做"分隔线"

帅哥哟,离线,有人找我吗?
唐尸三摆手
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
请教,专业报表如何做"分隔线"  发帖心情 Post By:2010/9/20 19:18:00 [只看该作者]

例程中的专业报表有个连续打印员工资料表的例子,请教如何在两个资料表中间设置一条分隔线(也可以叫做剪裁线)

 

 

 

样式是这样的:

 

 

此处为第一个资料表

 

----------------剪裁线----------------

 

此处是第二个资料表

 

 

 

 

 

鼓捣了半天也没出结果,请指教一下


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/9/20 23:10:00 [只看该作者]

这样吗:

 

Dim doc As New PrintDoc
Dim rt As New prt.RenderText
rt.Text = "----------------------剪裁线------------------------"
doc.Body.Children.Add(rt)
doc.Preview()


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/20 23:22:00 [只看该作者]

哈哈,气死老夫了,我还在想尽办法划线呢。

 

 

 


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/9/21 1:20:00 [只看该作者]

以下是引用狐狸爸爸在2010-9-20 23:22:00的发言:

哈哈,气死老夫了,我还在想尽办法划线呢。

 

 

 

 

哈,你想歪了。

试了一下,用画线的方法也可以解决。

 

Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("员工")
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim rt As New prt.RenderTable() '定义一个表格对象
    Dim rx As New prt.RenderText '定义一个文本对象
    Dim ra As New prt.RenderArea '定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
    '加入标题
    rx.text = "员工资料卡"
    rx.Style.FontBold = True '字体加粗
    rx.Style.FontSize = 16 '大体大小为16磅
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    rx.Style.Spacing.Top = 3
    rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
    ra.Children.Add(rx) '加入到容器中
    '指定行数?列数?列宽?行高
    rt.Rows.Count = 7 '设置总行数
    rt.Cols.Count = 5 '设置总列数
    rt.Height = 80 '设置表格的高度
    rt.Rows(6).Height = 30 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
    rt.Cols(0).Width = 26 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
    rt.Cols(1).Width = 35
    rt.Cols(2).Width = 26
    rt.Cols(3).Width = 40
    '设置合并单元格
    rt.Cells(0,4).SpanRows = 6 '第1行第5个单元格向下合并6行(用于显示照片)
    rt.Cells(4,1).SpanCols = 3 '第5行第2个单元格向右合并3列(用于显示地址)
    rt.Cells(6,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
    '设置表格样式
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.Spacing.Bottom = 9 '和下一个资料卡的距离是5毫米
    rt.Style.GridLines.All = New prt.Linedef '设置网格线
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
    rt.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
    '下面很简单,指定每一个单元格的内容
    rt.Cells(0,0).Text= "姓名"
    rt.Cells(0,1).Text = rw("姓名")
    rt.Cells(0,2).Text= "出生日期"
    rt.Cells(0,3).Text = rw("出生日期")
    rt.Cells(1,0).Text= "部门"
    rt.Cells(1,1).Text = rw("部门")
    rt.Cells(1,2).Text= "雇佣日期"
    rt.Cells(1,3).Text = rw("雇佣日期")
    rt.Cells(2,0).Text= "性别"
    rt.Cells(2,1).Text = rw("性别")
    rt.Cells(2,2).Text= "职务"
    rt.Cells(2,3).Text = rw("职务")
    rt.Cells(3,0).Text= "城市"
    rt.Cells(3,1).Text = rw("城市")
    rt.Cells(3,2).Text= "邮政编码"
    rt.Cells(3,3).Text = rw("邮政编码")
    rt.Cells(4,0).Text= "地址"
    rt.Cells(4,1).Text = rw("地址")
    rt.Cells(5,0).Text= "家庭电话"
    rt.Cells(5,1).Text = rw("家庭电话")
    rt.Cells(5,2).Text= "办公电话"
    rt.Cells(5,3).Text = rw("办公电话")
    rt.Cells(6,0).Text = rw("备注")
    rt.Cells(0,4).Image = GetImage(rw("照片"))
    ra.Children.Add(rt) '加入到容器中
    '加入分隔线
    Dim Line As New prt.LineDef(0.5, Color.Black,DashStyle.Dot)
    Dim ln As New prt.RenderLine(0,90, 200,90, Line)
    ra.Children.Add(ln) '将线条加入到容器中

    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next
Doc.Preview() '预览报表

[此贴子已经被作者于2010-9-21 1:32:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/9/21 7:45:00 [只看该作者]

二楼的方法结果是剪裁线在每个资料表的顶端,包括第一个资料表,这样好像位置不对啊!

 

 

四楼的方法结果是需要定义资料表和分隔线的间隔宽度,而且中间无  “剪裁线”字样


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2010/9/21 7:58:00 [只看该作者]

以下是引用唐尸三摆手在2010-9-21 7:45:00的发言:

二楼的方法结果是剪裁线在每个资料表的顶端,包括第一个资料表,这样好像位置不对啊!

 

 

 

二楼的方法加上位置应该可以的


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/21 8:44:00 [只看该作者]

ra.Children.Add(rt) '加入到容器中
'加入分隔线
Dim rl As New prt.RenderText
rl.Text = "----------------------剪裁线------------------------"
rl.Style.TextAlignHorz = prt.AlignHorzEnum.Center
rl.Width = 100%
rt.Style.Spacing.Top = 10
Doc.Body.ChildRen.Add(ra) '将容器加入到报表中

 
 


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/9/21 9:22:00 [只看该作者]

老大的代码好像有问题,这样是可以的

 

 '加入分隔线
    Dim ry As New prt.RenderText
    ry.Text = "---------------------------------------------------------------------剪裁线-----------------------------------------------------------------------------"
    ry.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
    ry.Style.Spacing.top  = 2 '和上面的对象(表格)距离5毫米
    ry.Style.Spacing.Bottom = 5 '和下面的对象(表格)距离5毫米

    ra.Children.Add(rt) '加入到容器中
    ra.Children.Add(ry) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/21 9:38:00 [只看该作者]

呵呵,我漏掉一行。

 回到顶部