设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2132|回复: 2
打印 上一主题 下一主题

[报表] 报表自动划线,线粗怎么调整

[复制链接]
跳转到指定楼层
1#
发表于 2015-10-21 11:39:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chentaoww 于 2015-10-21 15:05 编辑

使用了红尘如烟的自动划线代码,代码如下,打印后发现线条太细,想加粗到1磅,可以实现吗,麻烦高手帮忙看看。谢谢啦。
Option Compare Database
Option Explicit
'==========================================================================================================================
'函数名称:     ReportSheet
'功能描述:     简单报表中用来画表格并实现补空行,因补空行的缘故,可以有报表页眉、页面页眉、页面页脚,
'               但不应有报表页脚,如果固定行数还不应有报表页眉
'输入参数:     rpt             必须的,报表对象
'               RowsOfPage      可选的,每页要显示的记录行数
'               Style           可选的,表格样式,0为网格式,1为横格式,2为竖格式
'               HasColumnHeader 可选的,是否对列标题同样画表格
'返回参数:     无
'使用示例:     在窗体的Page事件中调用: ReportSheet Me,[序号],[金额],30
'相关调用:
'使用注意:     主体上的控件不用按索引顺序从左到右排列
'兼 容 性:
'参考资料:
'原 作 者:     红尘如烟
'创建日期:     2010-9-17
'修    改:     t小宝
'修改日期:     2010-9-25
'==========================================================================================================================
Public Function ReportSheet(rpt As Report, _
                            LeftControl As Control, _
                            RightControl As Control, _
                            Optional RowsOfPage As Integer, _
                            Optional Style As Integer = 0, _
                            Optional HasColumnHeader As Boolean = True)
On Error Resume Next
    Dim intI As Integer
    Dim lngTop As Long          '表格上边距,即报表页眉的高度
    Dim lngBottom As Long       '表格下边距,报表页眉的高度 +主体节高度×每页要显示的记录数
    Dim lngLeft As Long         '表格左边距,第一个控件的左边距
    Dim lngRight As Long        '表格右边距,最后一个控件的左边距+最后一个控件的宽度
    Dim lngRowHeight As Long    '行高,即主体节高度

    Dim lngRows As Long
    Dim lngRowTop As Long
    Dim lngBottomMax As Long

    Dim ctl As Control

    With rpt
        lngRowHeight = .Section(acDetail).Height                          ' 行高:主体节高度
        lngTop = .Section(acPageHeader).Height                            ' 设上边距为页面页眉高度,为防止报表没有页面页眉所以代码单独一行
        If .Page = 1 Then lngTop = lngTop + .Section(acHeader).Height     ' 第一页再加上报表页眉高度,为防止报表没有报表页眉所以代码单独一行
        lngBottomMax = .Section(acPageFooter).Height                      ' 页面页脚高度,为防止报表没有页面页脚所以代码单独一行
        lngBottomMax = .ScaleHeight - lngBottomMax                        ' 报表高度减去页面页脚高度得到最大允许的下边距
    End With
    lngRows = Int((lngBottomMax - lngTop) / lngRowHeight)                 ' 当前页面能容纳的行数
    If RowsOfPage > 0 Then
       If RowsOfPage < lngRows Then lngRows = RowsOfPage                  ' 如果指定的行数不超过能容纳的行数,取指定行数
    End If
    lngBottom = lngTop + lngRowHeight * lngRows                           ' 根据行数计算表格下边距

    If HasColumnHeader Then
        lngRows = lngRows + 1
        lngTop = lngTop - lngRowHeight
    End If
    lngLeft = rpt.ScaleWidth
    For Each ctl In rpt.Section(acDetail).Controls
        If lngLeft > ctl.Left Then lngLeft = ctl.Left                                ' 表格左边距
        If lngRight < ctl.Left + ctl.Width Then lngRight = ctl.Left + ctl.Width      ' 表格右边距
        If Style <> 1 Then rpt.Line (ctl.Left, lngTop)-(ctl.Left, lngBottom)         ' 画竖线
    Next
    If Style <> 1 Then rpt.Line (lngRight, lngTop)-(lngRight, lngBottom)             ' 在最右边画竖线

    '画横线
    If Style <> 2 Then
        For intI = 0 To lngRows
            rpt.Line (lngLeft, lngTop + lngRowHeight * intI)-(lngRight, lngTop + lngRowHeight * intI)
        Next
    End If
End Function

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-10-21 15:38:03 | 只看该作者
很简单,因报表划线的宽度是与报表的scalemode drawwidth有关
在画之前
设置me.drawwidth=2
这样即可,可设置为你自己需要的宽度
3#
 楼主| 发表于 2015-10-21 15:55:28 | 只看该作者
试了一下,不知道怎么加,帮写进去吧,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 19:33 , Processed in 0.084397 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表