Foxtable(狐表)用户栏目专家坐堂 → 专业报表打印图片的问题


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

主题:专业报表打印图片的问题

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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
专业报表打印图片的问题  发帖心情 Post By:2017/6/26 17:02:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:专业报表图片.jpg
图片点击可在新窗口打开查看

如上图,用户要求打印图片在中间,图片是在ftp服务器上,有一列专门显示地址,这种方式要如何实现,还有图片显示位置有合并是不是只能显示在最左侧,不能在中间?

谢谢!

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/26 18:07:00 [只看该作者]

位置问题,我测试没问题

 

Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderTable() '定义一个表格对象
Dim rm As New prt.RenderImage() '定义一个图片对象
rm.Image = GetImage("d:\test.ico") '请改为实际的图标名称和路径
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '图片水平居中
rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center '图片垂直居中

rm.Style.ImageAlign.StretchHorz = False '禁止水平方向扩展图片
rm.Style.ImageAlign.StretchVert = False '禁止垂直方向扩展图片
doc.Body.Children.Add(rt) '将表格对象加入到报表中
rt.Style.GridLines.All = New prt.Linedef(Color.DarkGray) '将表格的颜色设为深灰色
rt.Rows.Count = 10 '设置行数
rt.Cols.Count = 3 '设置列数
rt.Width = 100 '设置表格的宽度
rt.Height = 80 '设置表格的高度
rt.Cells(1,1).SpanRows = 5
rt.Cells(1,1).RenderObject = rm '将单元格内容设置为图片对象rm
Doc.Preview() '预览报表


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/26 18:08:00 [只看该作者]

 ftp服务器上的图片,你需要先下载下来才能引用到专业报表里面去的。

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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/6/26 21:09:00 [只看该作者]

sqltable的图片列不能打开图片浏览器窗口吗?在窗口afterload中写了如下代码
Tables(e.Form.name & "_明细").Cols("图片").OpenWindow()

不起作用,是不是只能另外增加一个图片浏览器控件来绑定到图片列?

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/26 21:46:00 [只看该作者]


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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/6/26 21:56:00 [只看该作者]

'---设置ftp图片列的属性
If Tables(winName & "_" & ctl.name).Cols.Contains("图片") Then
    DataTables(winName & "_" & ctl.name).DataCols("图片").ExtendType = ExtendTypeEnum.Images '图片列
    DataTables(winName & "_" & ctl.name).DataCols("图片").Remote = True
    DataTables(winName & "_" & ctl.name).DataCols("图片").FTPClient.Host = ftp_Host
    DataTables(winName & "_" & ctl.name).DataCols("图片").FTPClient.Account = ftp_User
    DataTables(winName & "_" & ctl.name).DataCols("图片").FTPClient.password = ftp_Pwd
    DataTables(winName & "_" & ctl.name).DataCols("图片").FTPClient.port = ftp_Port  'ftp端口不是21时必须指定
    DataTables(winName & "_" & ctl.name).DataCols("图片").FTPClient.UTF8 = True '避免中文乱码
    Tables(winName & "_" & ctl.name).Cols("图片").OpenWindow  '打开图片列窗口

这些在sqltable加载后都有设置的,在图片列中点击单元格按钮都可以正常打开显示,但用户想在切换行时就能显示不同的图片,所以不知道为何红色这个代码不起作用?


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/26 22:44:00 [只看该作者]

嗯。这个只有主表起作用。窗口表用图片控件吧

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 8:34:00 [只看该作者]

以下是引用HappyFt在2017/6/26 21:56:00的发言:
'---设置ftp图片列的属性

这些在sqltable加载后都有设置的,在图片列中点击单元格按钮都可以正常打开显示,但用户想在切换行时就能显示不同的图片,所以不知道为何红色这个代码不起作用?

 

单独增加pictureviewer控件才行的。


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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/6/27 22:35:00 [只看该作者]

Dim ColNames As String() = New String(){"序号","产品编码","品名","图片","规格","数量","计量单位","箱号","装箱数","备注"}
Dim drs As List(Of DataRow)
drs = DataTables("订单_明细").Select("订单编号 = '" & CurRow("订单编号") & "'")
If drs.count > 0 Then  '如果有值
    For i As Integer = 0 To drs.Count-1
        rt.Rows(rt.Rows.Count).Height = rh
        For c As Integer = 0 To ColNames.Length -1
            If c = 0 Then  '序号列格式化为两位
                rt.cells(rt.Rows.Count-1,c).text = Format(i+1,"00")
            ElseIf c = 3 Then  '图片列
                Dim rm As New prt.RenderImage() '定义一个图片对象
                rm.Image = GetImage(drs(i)(ColNames(c))) '请改为实际的图标名称和路径
                rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '图片水平居中
                rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center '图片垂直居中
                rm.Style.ImageAlign.StretchHorz = False '禁止水平方向扩展图片
                rm.Style.ImageAlign.StretchVert = False '禁止垂直方向扩展图片
                rt.cells(rt.Rows.Count-1,c).RenderObject = rm '将单元格内容设置为图片对象rm
.......
            End If
        Next
    Next
End If

请教下老师,红色的地方因为图片列是用ftp上的jpg文件,用msgxob()显示出来的路径是"/Photo/11-UR80.jpg"

打印预览的结果没有出错,但是图片列全部都变为空了,那个地方的路径应该怎么写才正确?
谢谢! 

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/27 22:51:00 [只看该作者]

自己检查一下本地的真正的图片路径是什么,相应改改下面红色代码

Dim ColNames As String() = New String(){"序号","产品编码","品名","图片","规格","数量","计量单位","箱号","装箱数","备注"}
Dim drs As List(Of DataRow)
drs = DataTables("订单_明细").Select("订单编号 = '" & CurRow("订单编号") & "'")
Dim fd As String = DataTables("订单_明细").DataCols("图片").DefaultFolder 
If fd = "" Then fd = ProjectPath & "Attachments"
If drs.count > 0 Then  '如果有值
    For i As Integer = 0 To drs.Count-1
        rt.Rows(rt.Rows.Count).Height = rh
        For c As Integer = 0 To ColNames.Length -1
            If c = 0 Then  '序号列格式化为两位
                rt.cells(rt.Rows.Count-1,c).text = Format(i+1,"00")
            ElseIf c = 3 Then  '图片列
                Dim rm As New prt.RenderImage() '定义一个图片对象
                rm.Image = GetImage(fd & drs(i)(ColNames(c))) '请改为实际的图标名称和路径
                rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '图片水平居中
                rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center '图片垂直居中
                rm.Style.ImageAlign.StretchHorz = False '禁止水平方向扩展图片
                rm.Style.ImageAlign.StretchVert = False '禁止垂直方向扩展图片
                rt.cells(rt.Rows.Count-1,c).RenderObject = rm '将单元格内容设置为图片对象rm
.......
            End If
        Next
    Next
End If

 回到顶部
总数 12 1 2 下一页