Foxtable(狐表)用户栏目专家坐堂 → [求助]专业报表预览时能否加入背景图片


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

主题:[求助]专业报表预览时能否加入背景图片

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]专业报表预览时能否加入背景图片  发帖心情 Post By:2018/5/27 9:01:00 [只看该作者]

在专业报表预览时加入背景图片,但是提示“未将对象引用设置到对象的实例。”
能否加入背景图,每页都有?
请指教,谢谢!

图1:当前的预览

图片点击可在新窗口打开查看此主题相关图片如下:image 2.jpg
图片点击可在新窗口打开查看


预览代码如下:
e.Form.ResumeRedraw
e.Form.StopRedraw
Dim doc As New PrintDoc '定义一个报表

doc.PageSetting.Width = 230 '纸张宽度为100毫米
doc.PageSetting.Height = 127 '纸张高度为120毫米
Dim rx As prt.RenderText '定义一个文本对象
Doc.PageSetting.LeftMargin = 19 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 24 '设置上边距
Doc.PageSetting.BottomMargin = 12 '设置下边距

Dim x As Integer = val(e.Form.Controls("TextBox01").Value) '定义水平偏移参数
Dim y As Integer = val(e.Form.Controls("TextBox02").Value) '定义垂直偏移参数
Dim rm As prt.RenderImage '定义一个图形队形

rm.Image = getImage("EMS套打.jpg")
rm.Width = "100%Parent" '设置尺寸为容器(页面)尺寸
rm.Height = "100%Parent" 
rm.Style.ImageAlign.KeepAspectRatio = True '保持比例
doc.Body.Children.Add(rm) '将图片对象加入报表

With Tables("EMS编辑_table1")
    For Each Currow As Row In .GetCheckedRows
        
        Dim rep As New prt.RenderEmpty '定义一个新的空对象
        rep.BreakBefore = prt.BreakEnum.Page '打印前换页
        doc.Body.Children.Add(rep ) '加入到报表中
        
        rx = new prt.RenderText
        rx.Text = CurRow("年")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 70 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 27 + y
        doc.body.Children.Add(rx)
        
        rx = new prt.RenderText
        rx.Text = CurRow("月")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 82 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 27 + y
        doc.body.Children.Add(rx)
        
        ......(中间省略)
        
        rx = new prt.RenderText
        rx.Text = CurRow("收件人邮政编码_6")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 204 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 68 + y
        doc.body.Children.Add(rx)
    Next
End With

_MyDoc = Doc

_MyRDL.Document = _MyDoc
Dim p As WinForm.Panel = e.Form.controls("Panel1")
If p.basecontrol.controls.count = 0 Then
    _MyRDL.Dock = 5
    p.BaseControl.Controls.Add(_MyRDL)
    _MyRDL.Toolbars.File.Visible = False
End If

_MyDoc.Generate()  '这句替代 doc.Preview() '预览
e.Form.ResumeRedraw


[此贴子已经被作者于2018/5/27 10:42:39编辑过]

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


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


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2018/5/27 20:56:00 [只看该作者]

谢谢甜老师!
可以作为背景了,但是没有居中充满。
请帮忙看一下加黑的代码,

图片点击可在新窗口打开查看此主题相关图片如下:image 1.png
图片点击可在新窗口打开查看

e.Form.ResumeRedraw
e.Form.StopRedraw
Dim doc As New PrintDoc '定义一个报表

doc.PageSetting.Width = 230 '纸张宽度为100毫米
doc.PageSetting.Height = 127 '纸张高度为120毫米
Dim rx As prt.RenderText '定义一个文本对象
Doc.PageSetting.LeftMargin = 19 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 24 '设置上边距
Doc.PageSetting.BottomMargin = 12 '设置下边距

Dim x As Integer = val(e.Form.Controls("TextBox01").Value) '定义水平偏移参数
Dim y As Integer = val(e.Form.Controls("TextBox02").Value) '定义垂直偏移参数

Dim rm As prt.RenderImage '定义一个图形队形
rm.Image = getImage("EMS套打.jpg")
rm.Width = 230 '宽度等于页面宽度
rm.Height = 127 '高度等于页面高度
Doc.WaterMark = rm '作为水印使用


With Tables("EMS编辑_table1")
    For Each Currow As Row In .GetCheckedRows
        
        Dim rep As New prt.RenderEmpty '定义一个新的空对象
        rep.BreakBefore = prt.BreakEnum.Page '打印前换页
        doc.Body.Children.Add(rep ) '加入到报表中
        
        rx = new prt.RenderText
        rx.Text = CurRow("年")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 70 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 27 + y
        doc.body.Children.Add(rx)
        
        rx = new prt.RenderText
        rx.Text = CurRow("月")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 82 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 27 + y
        doc.body.Children.Add(rx)
        
        ......
        
        rx = new prt.RenderText
        rx.Text = CurRow("收件人邮政编码_6")
        rx.Style.Font = New Font("宋体", 10, FontStyle.Bold)
        rx.x = 204 + x '设置坐标的时候,注意加上偏移参数
        rx.y = 68 + y
        doc.body.Children.Add(rx)
    Next
End With

_MyDoc = Doc

_MyRDL.Document = _MyDoc
Dim p As WinForm.Panel = e.Form.controls("Panel1")
If p.basecontrol.controls.count = 0 Then
    _MyRDL.Dock = 5
    p.BaseControl.Controls.Add(_MyRDL)
    _MyRDL.Toolbars.File.Visible = False
End If

_MyDoc.Generate()  '这句替代 doc.Preview() '预览
e.Form.ResumeRedraw

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


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

参考

 

Dim doc As New PrintDoc '定义一个报表对象
Dim rm As New prt.RenderImage '定义一个图片对象
rm.Image = GetImage("d:\test.jpg") '设置图片
rm.Width = 230 '宽度等于页面宽度
rm.Height = 127 '高度等于页面高度
rm.x = 0
rm.y = 0

'rm.Style.ImageAlign.StretchHorz = False '禁止图片水平拉伸
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '居中显示
Doc.WaterMark = rm '作为水印使用
Doc.Preview() '预览


 回到顶部