vfp9 中增加了 blob 型字段,这可是个好东西!用它来存储图像数据最合适,与 SQL 的交换也很顺利,接下来就是使用它了。
使用它当然无外乎是显示/打印图像;显示很简单,表单上放一个 Image 控件,然后将 Image.PictureVal 赋值为这个 blob 字段即可;然而如何打印却费了我一番周折,在梅子上看到有人说先用 StrToFile 保存为图像文件,然后再用于报表,当然也行;不过,难道就不能直接使用吗?
当时确实没有找到好办法,一段时间后,终于在 Green1Vfp 找到了解决方案,唯一的问题是,需要使用 vfp9 的报表监听器,而 vfp9 的对象辅助报表对中文的支持仍存在一些问题,所以我一直没有 SET REPORTBEHAVIOR 90;那么在 SET REPORTBEHAVIOR 80 下是否也能直接打印 blob 中的图像呢?
要解决的问题是:
1. 不使用 blob 还原成文件的方法来打印 blob 字段(针对图片)内容
2. 不使用 vfp9 特有的对象辅助报表方式来打印(主要是不想使用报表监听器对象)
经过 20 分钟的探索,终于找到了方法,下面是验证的过程:
1. 先按下图建一个名为 Test 的报表:
前面三个是字段控件,第 4 个是一个 Picture/Ole Bound 控件,注意按次序添加,至少③要在④之前加入,因为我们需要在打印④之前先由③来改变它绑定的图像数据。如果是修改已存在的报表,则应该先将 4 剪切掉,然后再粘贴回来;当然你也可以用布局工具中的 Bring to Front 将④放到最前端(也就最后显示/打印)。
2. 接下来设置它们的数据源,前两个没什么好说的,按下图设置即可(只有划红线的地方需要修改,其它用缺省值即可,下同)
第一个绑定到 t1.fname 字段上,第二个绑到 t1.lname 上(这个咱就不放图片了,节约每一字节空间)
3. 接着是第三个字段控件,其实它并不用于打印,只是用它来改变 Pic/Ole Bound 所绑定的图片数据而已,所以需要将它的 Print When 设为 .F.
4. 最后加入最重要的图片控件:
好了,报表设计完毕!保存为 test.frx
5. 现在写验证代码:
将上面的代码保存为 prg,运行它,我看到如下结果,你呢?
这里是上面的示例文件:示例文件(右击选目标另存为)
联系客服