图片框Image能绑定到字段吗?

Ilikefox 2011-06-13 09:40:49
常遇到有人提到vfp处理图片的问题,比如一个人员信息表,有编号、有姓名、有......,啊!还有相片。
当然一般好像总是把相片扔到某个文件夹下,表中留个字段(比如“相片”),存放对应相片的路径。

接下来往往就是“我想在表单上显示人员信息,每个人对应的相片也要同时显示在上面,我用几个按钮,‘上一个’、‘下一个’的可以翻着看”。

怎么办?最简单的就是在表单上用绑定的控件,如文本框啊、编辑框啊、单选按钮组啊....... 和字段一一绑定,这样那些按钮只管skip一下,然后thisform.refresh,那些控件里面的内容随之变化。太方便了。

但是、可是、可但是还有相片啊,好吧!用个图片框来显示,糟糕的是这家伙不能绑定字段,只能“手工”把“相片”字段中的图片路径赋值给这家伙的Picture属性。当你skip后,当前记录变了,唉!又要“手工”把“相片”字段中的图片路径赋值给这家伙的Picture属性才能更新相片。做法倒不难,按钮中skip完,接着就重新给图片框赋值呗,然后再refresh去。示例如下:

skip
thisform.image1.picture = alltrim(表.相片)
thisform.refresh

一切ok了,没有,只有你上一个、下一个的时候才有相片。还得在比如thisform.init事件中再来这么一下(给image1赋值),不然一启动窗子,张三的相片是个灰色的框,还有个叉叉,太难看鸟。

唉,好希望image1也像其他控件一样自动更新,多好。行吗?不行。真不行?就是不行,这家伙TMD就不是绑定控件嘛!

不过,我们还是可以变通一下,来个伪“绑定”。

我们把“相片”字段也和表单上一个文本框绑定起来,(这很简单,因为本身就是字符型的嘛),不过要把这个文本框隐藏起来。你大概不喜欢在上一个、下一个的时候看到一长串路径变来变去。然后,文本框的refresh方法改改

dodefault()
thisform.image1.picture = alltrim(this.value)

好了,把其他地方的类似thisform.image1.picture = alltrim(表.相片)的句子全干掉吧,清清爽爽。

这个文本框的refresh方法不需要你亲自调用,就当它不存在,当你thisform.refresh的时候,老狐狸会调用它。甚至启动窗子的时候,老狐狸也会调用它。

哈,至少从效果看来,我们绑定图片框了。

...全文
341 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_wang0823 2012-03-08
  • 打赏
  • 举报
回复
不用那么麻烦把
thisform.image1.PictureVal=&路径字段名 就可以啦
sdta2012 2012-02-19
  • 打赏
  • 举报
回复
经验证,楼主的方法是可行的,简单
jiafangliang 2012-02-19
  • 打赏
  • 举报
回复
在refresh事件中,加入
thisform.image1.PictureVal=表.照片
也可
-晴天 2011-06-14
  • 打赏
  • 举报
回复
GX.
十月鹰飞 2011-06-14
  • 打赏
  • 举报
回复
个人倾向于用通用字段和OLE绑定控件来解决,因为我们不只要实现某种功能,更重要的是最大限度保护业务数据的一致性和完整性。
needacoder 2011-06-14
  • 打赏
  • 举报
回复
我说了些新的
十豆三 2011-06-14
  • 打赏
  • 举报
回复
楼主方法不错,省事。

我一般都先判断图片在不在,在就覆给Image显示,不在就让Image显示一个空图片(自己画的,只有无图片三个字)

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧