Foxtable(狐表)用户栏目专家坐堂 → 求助:listview中如何获取二进制保存的图片呢?


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

主题:求助:listview中如何获取二进制保存的图片呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:listview中如何获取二进制保存的图片呢?  发帖心情 Post By:2015/5/14 23:38:00 [只看该作者]

在帮助文件中的代码如下:

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw
.StopRedraw() '暂停绘制
lvw
.Rows.Clear() '清除原来的行
lvw
.Images.Clear() '清除原来的图片
lvw
.View = ViewMode.LargeIcon '显示模式为大图标
lvw
.Images.LargeSize = New Size(130,150) '定义大图标尺寸
For Each
dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据
    Dim
Key As String = dr("照片") '获取此员工的照片文件
   
lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim
vr As  WinForm.ListViewRowlvw.Rows.Add() '增加一行
   
vr.Text = dr("姓名"'设置标题
   
vr.ImageKey = Key '设置图片键值
Next

lvw
.ResumeRedraw()

可以获取直接显示保存在本地的员工照片

 

但是采用二进制列保存的照片如何进行显示呢?

目前有员工信息,物料附件两表,

求解!

 

下面代码是实现在窗体中的图片管理显示对应二进制图片内容的    求整合!

Dim pbx As WinForm.PictureBox = Forms("员工信息管理").Controls("PictureBox1")
If e.Sender.ComboList = ""
    Return
End If
If Tables("员工信息").Current Is Nothing Then
    pbx.Image = Nothing
Else
    '  判断选择的是不是  图片格式,如果不是  则不执行代码   
    Dim dt As DataRow = DataTables("物料附件").SQLFind("附件名称='" & e.Sender.SelectedItem & "' and 物料编码='" & Tables("员工信息").Current("编号") & "' And [附件类别] = '员工信息'")
  
    If dt IsNot Nothing '必须要判断不然  报错
        Dim nm() As String = e.Sender.SelectedItem.split(".")
        Dim tpjh As String = "bmp,jpg,png,gif"
        If tpjh.Contains(nm(nm.Length-1)) Then '如果是图片格式则显示           
            pbx.Image = dt.SQlLoadImage("附件内容")  '从后台提取照片并显示
        Else
            pbx.Image = Nothing
        End If
    End If
End If

[此贴子已经被作者于2015/5/14 23:49:28编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/15 8:41:00 [只看该作者]

先把文件加载回来本地,再赋值.

数据量大效率很低.不建议这样. 除非一页显示少量数据

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)先把文件加载回来本地,再赋值.数据量大效...  发帖心情 Post By:2015/5/15 9:24:00 [只看该作者]

烦请老师多多指导 我昨天弄了一个晚上都没有同 按照下面那显示代码 总是提示错误

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/15 9:26:00 [只看该作者]

提示什么错误?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)提示什么错误?  发帖心情 Post By:2015/5/15 11:50:00 [只看该作者]

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.LargeIcon '显示模式为大图标
lvw.Images.LargeSize = New Size(130,150) '定义大图标尺寸

For Each dr As DataRow In DataTables("员工信息").DataRows '从数据表中提取数据
    Dim Key As String = dr("照片") '获取此员工的照片文件
    MessageBox.Show(key)
    lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    vr.Text = dr("名字")  '设置标题
    vr.ImageKey = Key '设置图片键值
Next
lvw.ResumeRedraw()

 

 

 

提示照片列不属于员工信息  照片咧是二进制列 在加载表的时候没有进行加载的

如果采用dt.SQlLoadImage直接提示不能转换成字符 

求解

 

[此贴子已经被作者于2015/5/15 11:50:33编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/15 11:52:00 [只看该作者]

用1楼的代码 报什么错?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)用1楼的代码 报什么错?  发帖心情 Post By:2015/5/15 14:54:00 [只看该作者]

一楼的代码不报错

但是那是两个不同的地方

所以图像不对应显示

 


 

[此贴子已经被作者于2015/5/15 16:35:16编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/15 15:30:00 [只看该作者]

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.LargeIcon '显示模式为大图标
lvw.Images.LargeSize = New Size(130,150) '定义大图标尺寸

For Each dr As DataRow In DataTables("员工信息").DataRows '从数据表中提取数据
    Dim Key As String = dr("_Identify") '获取此员工的照片文件
    Dim img = dr.SQlLoadImage("照片")
    If img IsNot Nothing Then
        lvw.Images.LargeImages.Add(key, img)
    End If
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    vr.Text = dr("名字")  '设置标题
    vr.ImageKey = Key '设置图片键值
Next
lvw.ResumeRedraw()


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)Dim lvw As WinForm.ListView = e.Fo...  发帖心情 Post By:2015/5/18 19:54:00 [只看该作者]


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

运行出错,且貌似读取速度相当慢,不知道有没有什么好的办法变通没有呢?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 19:54:00 [只看该作者]

 测试没有问题,没有变通方法。

 回到顶部
总数 22 1 2 3 下一页