Foxtable(狐表)用户栏目专家坐堂 → 报表的高度设置问题


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

主题:报表的高度设置问题

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
报表的高度设置问题  发帖心情 Post By:2014/4/9 19:24:00 [只看该作者]

在专业报表中,想将报表的高度自由设置容器的倍数,比如设置成容器的一半: rt.Height ="50%Parent.Height" ,但奇怪的事儿发生了,报表竟然插进去3-4行的空行,把这个高度的设置去掉以后,恢复正常,想不明白这是为何?后来发现只要设定   rt.Height 的行高就会出现这个问题,如何解决呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/9 19:29:00 [只看该作者]

 上传个例子,或者贴出可测试的代码

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/10 12:51:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:专业报表打印测试.foxdb

 

相关代码:

Dim doc As New PrintDoc '定义一个新报表
Dim rt As New prt.RenderTable '定义一个表体表格
Dim bt As New prt.RenderTable '定义页眉表格
Dim tb As Table = Tables("窗口1_Table1")
Dim cnt As Integer '用于记录列位置
Dim hd As Integer = tb.HeaderRows '获得表头的层数
tb.CreateReportHeader(rt,True) '生成多层表头,排除隐藏列

 

 

For c As Integer = 0 To tb.Cols.Count -1 '逐列设置和填入内容
    If tb.Cols(c).Visible Then
        rt.Cols(cnt).Width = tb.Cols(c).PrintWidth '列宽等于实际列宽
        If tb.Cols(c).IsNumeric OrElse tb.Cols(c).IsDate Then '如果是数值或日期列
            rt.Cols(cnt).Style.TextAlignHorz = prt.AlignHorzEnum.Right '数据水平靠右
        End If
        For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
            rt.Cells(r + hd+3, cnt).Style.F   '设置字体
            rt.Cells(r + hd+3, cnt).Style.FontSize=10             '设置字号
            rt.Cells(r + hd+3, cnt).Style.Fontbold = False         '不设置加粗
            rt.Rows(r + hd+3).Height = tb.DefaultRowHeight/4  '设置行高
           
            If tb.Cols(c).IsNumeric And tb.Cols(c).Name Like "*行次*"=False And tb.Cols(c).Name Like "*序号*"=False Then
                If tb(r,c)=0 Then '如果是数值或日期列
                    rt.Cells(r + hd+3, cnt).Text =""
                Else
                    rt.Cells(r + hd+3, cnt).Text = format(tb(r,c),"#,###.00")
                End If
            Else
                rt.Cells(r + hd+3, cnt).Text = tb(r,c)
            End If
        Next
        cnt = cnt + 1
    End If
Next


rt.Style.Gridlines.All = New prt.Linedef(Color.black  ) '黑色网格线
rt.CellStyle.Spacing.All = 0.5 '单元格内距设为0.5毫米


Doc.PageHeader = bt '表名做为页眉使用
rt.RowGroups(0, hd).Header = prt.TableHeaderEnum.All '利用行组功能设置表头
rt.RowGroups(0, hd).Style.F   '设置字体
rt.RowGroups(0, hd).Style.FontSize=10             '设置字号
rt.RowGroups(0, hd).Style.Fontbold = False         '不设置加粗

rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '  表格宽度超出页宽时,可以水平换页
rt.SplitVertBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '     '表格宽度超出页宽时,可以水平换页

rt.Height ="Parent.Height"           
doc.Body.Children.Add(rt) '将表格加入到报表
doc.Preview()


 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/10 13:57:00 [只看该作者]

这段代码,为什么要+3?

 

            rt.Cells(r + hd+3, cnt).Style.F   '设置字体
            rt.Cells(r + hd+3, cnt).Style.FontSize=10             '设置字号
            rt.Cells(r + hd+3, cnt).Style.Fontbold = False         '不设置加粗
            rt.Rows(r + hd+3).Height = tb.DefaultRowHeight/4  '设置行高
           
            If tb.Cols(c).IsNumeric And tb.Cols(c).Name Like "*行次*"=False And tb.Cols(c).Name Like "*序号*"=False Then
                If tb(r,c)=0 Then '如果是数值或日期列
                    rt.Cells(r + hd+3, cnt).Text =""
                Else
                    rt.Cells(r + hd+3, cnt).Text = format(tb(r,c),"#,###.00")
                End If
            Else
                rt.Cells(r + hd+3, cnt).Text = tb(r,c)
            End If


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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/10 15:48:00 [只看该作者]

想起怎么回事儿了,谢谢!这是个在开发中遗留的问题没改正,多谢!


 回到顶部