以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  打印图片  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147395)

--  作者:deliangzhaoe
--  发布时间:2020/3/15 21:28:00
--  打印图片
表D的图片列有四张图片,将这四张图片打印到一张纸上,怎样改一下代码?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试求助项目20200315.foxdb



--  作者:有点蓝
--  发布时间:2020/3/15 23:31:00
--  
……
    \'打印现场照片页
    Dim rt2 As New prt.RenderTable() \'定义一个表格对象
    Dim rx2 As New prt.RenderText \'定义一个文本对象
    Dim ra2 As New prt.RenderArea \'定义一个容器
    ra2.SplitVertBehavior = prt.SplitBehaviorEnum.Never  \'禁止容器因为分页而被垂直分割
    \'设置一级标题
    rx2.text = "公司继续教育培训记录-现场照片"
    rx2.Style.FontSize = 14 \'大体大小为18磅
    rx2.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列
    rx2.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离5毫米
    ra2.Children.Add(rx2) \'加入到容器中
    \'设置表格样式
    rt2.Rows.Count = 1 \'设置总行数
    rt2.Cols.Count = 1 \'设置总列数
    rt2.Height = 250 \'设置表格的高度
    rt2.Style.GridLines.All = New prt.LineDef(0.3,Color.blue)
    \'rt2.Rows(0).Height = 244 \'设置行的高度
    \'\'rt2.Rows(1).Height = 122
    \'rt2.Cols(0).Width = 210 \'设置列的宽度
    \'rt2.Cols(1).Width = 105
    \'设置表格样式
    rt2.Style.GridLines.All = New prt.Linedef \'设置网格线
    Dim rw2 As prt.Renderimage \'定义一个图片对象
    Dim lst As List(of String) = rw.DataRow.Lines("现场照片")
Dim p As Integer = 0
    For k As Integer = 0 To lst.Count - 1 Step 2
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k))
        rw2.Width = 100
        rw2.Height = 120
        \'rw2.Style.ImageAlign.StretchHorz = False \'禁止水平方向扩展图片
        \'rw2.Style.ImageAlign.StretchVert = False \'禁止垂直方向扩展图片
        rt2.Cells(p,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k+1))
        rw2.Width = 100
        rw2.Height = 120
        \'rw2.Style.ImageAlign.StretchHorz = False \'禁止水平方向扩展图片
        \'rw2.Style.ImageAlign.StretchVert = False \'禁止垂直方向扩展图片
        rt2.Cells(p,1).RenderObject = rw2 \'将单元格内容设置为图片对象rm
p+=1
    Next
    ra2.Children.Add(rt2) \'将表格对象加入到报表中
    \'ra2.Children.Add(rw2) \'加入到容器中
    Doc.Body.ChildRen.Add(ra2) \'将容器加入到报表中
Next
Doc.Preview() \'预览报表

--  作者:deliangzhaoe
--  发布时间:2020/3/16 16:48:00
--  
p+=1
这 段是什么意思?

--  作者:有点蓝
--  发布时间:2020/3/16 16:52:00
--  
就是【p= p+1】,p变量累加
--  作者:deliangzhaoe
--  发布时间:2020/3/16 21:04:00
--  

For k As Integer = 0 To lst.Count - 1 Step 2
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k))
        rw2.Width = 100
        rw2.Height = 120
        rt2.Cells(p,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k+1))
        rw2.Width = 100
        rw2.Height = 120
        rt2.Cells(p,1).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        p + = 1
    Next

这段报错,老师帮忙再看一下

rw2.Image = GetImage(lst(k+1))

.NET Framework 版本:4.0.30319.1
Foxtable 版本:2020.1.19.19
错误所在事件:窗口,公司继续教育,公司继续教育显示所有1,Click
详细错误信息:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index


[此贴子已经被作者于2020/3/16 21:05:07编辑过]

--  作者:有点蓝
--  发布时间:2020/3/16 21:09:00
--  
For k As Integer = 0 To lst.Count - 1 Step 2
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k))
        rw2.Width = 100
        rw2.Height = 120
        rt2.Cells(p,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
if k+1 < lst.Count then
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k+1))
        rw2.Width = 100
        rw2.Height = 120
        rt2.Cells(p,1).RenderObject = rw2 \'将单元格内容设置为图片对象rm
end if
        p + = 1
    Next

--  作者:deliangzhaoe
--  发布时间:2020/3/16 21:34:00
--  
不显示图片,是不是因为我的图片太大了。

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


--  作者:有点蓝
--  发布时间:2020/3/16 22:00:00
--  
图片放在哪里的?

msgbox(rw.DataRow("现场照片")

--  作者:deliangzhaoe
--  发布时间:2020/3/17 18:39:00
--  
这是输出的结果:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20200317183355.jpg
图片点击可在新窗口打开查看

一页纸打印四张图片太小了,一页打印两张图片,剩余的一张或两张在第二页打印。请老师改一下代码,谢谢了,多次麻烦您,不好意思。
现在的代码是:


    \'打印现场照片页
    Dim rt2 As New prt.RenderTable() \'定义一个表格对象
    Dim rx2 As New prt.RenderText \'定义一个文本对象
    Dim ra2 As New prt.RenderArea \'定义一个容器
    ra2.SplitVertBehavior = prt.SplitBehaviorEnum.Never  \'禁止容器因为分页而被垂直分割
    \'设置二级标题
    rx2.text = "公司继续教育培训记录-现场照片"
    rx2.Style.FontSize = 14 \'大体大小为18磅
    rx2.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列
    rx2.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离5毫米
    ra2.Children.Add(rx2) \'加入到容器中
    \'设置表格样式
    rt2.Rows.Count = 1 \'设置总行数
    rt2.Cols.Count = 1 \'设置总列数
    rt2.Height = 250 \'设置表格的高度
    rt2.Style.GridLines.All = New prt.LineDef(0.3,Color.blue)
    \'设置表格样式
    rt2.Style.GridLines.All = New prt.Linedef \'设置网格线
    Dim rw2 As prt.Renderimage \'定义一个图片对象
    Dim lst As List(of String) = rw.DataRow.Lines("现场照片")
msgbox(rw.DataRow("现场照片"))
    Dim p As Integer = 0
    For k As Integer = 0 To lst.Count - 1 Step 2
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k))
        rw2.Width = 100
        rw2.Height = 120
        rt2.Cells(p,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        If k+1 < lst.Count Then
            rw2 = New prt.Renderimage \'定义一个图片对象
            rw2.Image = GetImage(lst(k+1))
            rw2.Width = 100
            rw2.Height = 120
            rt2.Cells(p,1).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        End If
        p + = 1
    Next
    ra2.Children.Add(rt2) \'将表格对象加入到报表中
    Doc.Body.ChildRen.Add(ra2) \'将容器加入到报表中Next


--  作者:有点蓝
--  发布时间:2020/3/17 20:38:00
--  
……
    rt.Cells(0,0).Text= "企业名称"
    rt.Cells(0,1).Text = rw("企业名称")
    rt.Cells(0,2).Text= "年度"
    rt.Cells(0,3).Text = rw("年度")
    ra.Children.Add(rt) \'加入到容器中
    Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
    
    \'打印现场照片页
    
    Dim lst As List(of String) = rw.DataRow.Lines("现场照片")
    
    For k As Integer = 0 To lst.Count - 1 Step 2
        Dim rt2 As New prt.RenderTable() \'定义一个表格对象
        Dim rx2 As New prt.RenderText \'定义一个文本对象
        Dim ra2 As New prt.RenderArea \'定义一个容器
        ra2.SplitVertBehavior = prt.SplitBehaviorEnum.Never  \'禁止容器因为分页而被垂直分割
        \'设置一级标题
        rx2.text = "公司继续教育培训记录-现场照片"
        rx2.Style.FontSize = 14 \'大体大小为18磅
        rx2.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列
        rx2.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离5毫米
        ra2.Children.Add(rx2) \'加入到容器中
        \'设置表格样式
        rt2.Rows.Count = 1 \'设置总行数
        rt2.Cols.Count = 1 \'设置总列数
        rt2.Height = 250 \'设置表格的高度
        rt2.Style.GridLines.All = New prt.LineDef(0.3,Color.blue)

        \'设置表格样式
        rt2.Style.GridLines.All = New prt.Linedef \'设置网格线
        Dim rw2 As prt.Renderimage \'定义一个图片对象
        rw2 = New prt.Renderimage \'定义一个图片对象
        rw2.Image = GetImage(lst(k))
        rw2.Height = 120
        rt2.Cells(0,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        If k+1 < lst.Count Then
            rw2 = New prt.Renderimage \'定义一个图片对象
            rw2.Image = GetImage(lst(k+1))
            rw2.Height = 120

            rt2.Cells(1,0).RenderObject = rw2 \'将单元格内容设置为图片对象rm
        End If
        ra2.Children.Add(rt2) \'将表格对象加入到报表中
        Doc.Body.ChildRen.Add(ra2) \'将容器加入到报表中
    Next
    
Next
Doc.Preview() \'预览报表