编程论坛
注册
登录
编程论坛
→
VFP论坛
表格中显示图片,当记录数较多时,单击表格会卡顿5秒并变成空白,过一会才显示正常,请教如何解决??
asis
发布于 2023-01-07 21:57, 1698 次点击
在一个表格控件中显示每条记录的图片(是用ttt表的f2字段存放对应图片的存放路径,Thisform.grid1.Column2.Image1.Picture = ttt.f2),当记录数较多时,鼠标滚轮上下浏览表格时,只要单击表格任何一列都会卡顿5秒、鼠标指针转圈、表格只剩表头下面变成空白,像死机一样,过一会才又显示正常,在WIN10中卡顿较严重,请问有什么好的解决办法?谢谢!
这个表单已打包上传到附件中。
只有本站会员才能查看附件,请
登录
11 回复
#2
laowan001
2023-01-07 22:03
试试取消图片字段是否还慢,如果不慢了,那就是图片刷新造成的
我用过这种方式,后来放弃了,改成只显示当前记录的图片了
#3
asis
2023-01-07 22:08
没有图片的记录,单击不卡,有图片的一点就卡住。
我用这个方法主要是能上下浏览表格时,图片能自动更新,速度尚可接受。但缺点是鼠标一单击就卡几秒。
上面这种方法就没有改进图片刷新的方法了吗?
您说:改成只显示当前记录的图片了 ,是指不在表格中显示图片了吗?
#4
吹水佬
2023-01-07 22:38
如果是图标问题不大,如果是大图片就没必要这样做,用一个image控件就可以,反正都是看完一个再看另一个。
#5
csyx
2023-01-08 00:34
你说的记录数较多是过少?
我用你的示例,并另行复制了97张其他的图片,也就是总计100张不同的图片,未发现你描述的情况
#6
laowan001
2023-01-08 07:43
没有图片的记录,单击不卡,有图片的一点就卡住。
那就看有图片的记录点击的时候做了什么
#7
asis
2023-01-08 10:09
问题找到了,是我在表格的INIT中加入了移动记录时亮条显示:THIS.setall("Dynamicbackcolor", "IIF(RECNO()=grno,RGB(234,236,245),RGB(255,255,255))","Column")
取消后,单击记录时不再有明显的卡顿和表格变空白现象。不取消即使只有一条记录,单击也会卡住。
只有本站会员才能查看附件,请
登录
以上方法可以不把图片事先装入DBF表的备注字段再显示,仅需用一个字段存放图片文件的路径即可,实现起来相对简单。但单击记录时还是有一点响应时间,有时在1秒左右,
这是不足之处。
大家在利用表格控件显示和浏览大量记录及其对应的图片时,有什么更好的实现方法,可以集思广益,提出来与大家参考。
#8
吹水佬
2023-01-08 12:18
回复 7楼 asis
用PictureVal, 资源足可一次全部载入内存。
#9
asis
2023-01-08 17:57
用PictureVal, 资源足可一次全部载入内存。
请问这个大概的实现步骤是什么?图片文件可以不事先写入DBF的备注字段吗?
#10
csyx
2023-01-08 19:48
“但单击记录时还是有一点响应时间,有时在1秒左右”
说明你还没有找到卡顿的真实原因,用 backstyle 刷新一张图片,通常在 10ms 左右。最好放上真实的案例代码和数据
#11
asis
2023-01-08 20:17
回复 csyx:
不是说显示图片要等1秒钟,正常上下浏览表格时显示图片没问题,主要是每次单击表格某条记录时鼠标指针都有一个转圈顿一下的感觉,可能与图片文件放在另一台电脑的共享文件夹下有关。表格各列的CLICK事件中没有代码。
[此贴子已经被作者于2023-1-8 20:19编辑过]
#12
csyx
2023-01-08 21:10
不排除共享文件夹的原因,win10下共享确实有可能很慢
vfp的鼠标指针刷新也确实存在部分bug
在你的 showpic 最后加上这几行试试有没有改善
Try
oo = Thisform.ActiveControl
oo.MousePointer = 0
Catch
EndTry
1