热情软件屋

 

巧用 VB6 之 Data Report 实现图片、图表的打印及预览


编号:QA003098
建立日期: 2000年7月2日 最后修改日期:2000年7月2日
所属类别:

文章:

    作者:于溪玥
    摘要:VB 6.0 专业版和企业版中的数据报表设计器 (Data Report Designer) 是用来实现打印数据库数据的有力工具。在通常状况下, DataReport 的数据源(DataSource)应该是由数据库(DataBase)的基本表(Table)、视图(View)或查询(Query)等生成的,更确切的说该数据源应是一个 ADODB.Recordset (二维表),而且 ADO 允许生成并打开任意无数据库实体的记录集。这样就可以为 DataReport 随便设置一个数据源,用其实现实现图片打印的预览。
    链接:http://simideal.top263.net/Txt/ImageRpt.txt
    主持人:由于原链接已经失效。我们在这里提供原文:
    于溪玥(PlayYuer) 2000/02/01 贴:
    《巧用 VB6 之 Data Report 实现图片(Picture)、图表(MsChart)的打印及预览》
    VB 6.0 专业版和企业版中的数据报表设计器 (Data Report Designer) 是用来实现打印数据库数据的有力工具。在通常状况下, DataReport 的数据源(DataSource)应该是由数据库(DataBase)的基本表(Table)、视图(View)或查询(Query)等生成的,更确切的说该数据源应是一个 ADODB.Recordset (二维表),而且 ADO 允许生成并打开任意无数据库实体的记录集。这样就可以为 DataReport 随便设置一个数据源,用其实现实现图片打印的预览。
    首先,新建"标准 Exe"工程,再为工程添加 "Data Report" 。设置"工程属性"的启动对象为 "DataReport"。先使 DataReport "显示报表标头/注脚"(右鼠键快捷菜单),再绘制一个 RptImage 控件到"报表标头"区域。然后,就可以编写程序代码了:
    Private DataReport_Initialize()
    '创建并打开一个任意的记录集,并将其设置为 DataReport 的数据源
    Dim adoRecordset As New ADODB.Recordset
    adoRecordset.Fields.Append "X", adVariant
    adoRecordset.Open
    Set Me.DataSource = adoRecordset
    Dim adoRecordset As New ADODB.Recordset
    adoRecordset.Fields.Append "X", adVariant
    adoRecordset.Open
    
    Set Me.DataSource = adoRecordset
    
    Const ErrorX = 400 '打印机横向误差
    Const ErrorY = 400 '打印机纵向误差
    
    Me.ReportWidth = Printer.Width - Me.LeftMargin - Me.RightMargin - ErrorX
    Me.Sections.Item("Section1").Height = 0
    Me.Sections.Item("Section3").Height = 0
    
    Me.Sections.Item("Section2").Controls.Item("Image1").PictureAlignment = rptPACenter
    Me.Sections.Item("Section2").Controls.Item("Image1").SizeMode = rptSizeClip
    Me.Sections.Item("Section2").Controls.Item("Image1").Left = 0
    Me.Sections.Item("Section2").Controls.Item("Image1").Top = 0
    
    Me.Sections.Item("Section2").Height = Printer.Height - Me.TopMargin - Me.BottomMargin - ErrorY
    Me.Sections.Item("Section2").Controls.Item("Image1").Width = Me.ReportWidth
    Me.Sections.Item("Section2").Controls.Item("Image1").Height = Me.Sections.Item("Section2").Height
    
    Dim x As Picture
    Select Case i
     Case 1 '打印 MsChart。MsChart 本身并没有提供 Print 或 PaintPicture 方法
     FormX.MSChartX.EditCopy 'MsChart 可绘制在某窗体 FormX 上
     Set x = Clipboard.GetData()
     Case 2 '打印图片文件(Image、Picture)
     Set x = LoadPicture("..\..\xxx.bmp") '图片文件(*.jpg ...)路径
    End Select
    Set Me.Sections.Item("Section2").Controls.Item("Image1").Picture = x
    End Sub
    

    该方案比使用 "Object.PaintPicture ... " 的方法打印多了预览的功能,而且还可以通过 RptImage 控件的 PictureAlignment 属性控制图像在纸张上的位置,通过 SizeMode 属性控制图像的拉伸,优点是不言而喻的。

文章来源:于溪玥

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio