« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称:fermos_blog 日志总数:73 评论数量:261 留言数量:30 访问次数:396566 建立时间:2005年3月27日 |

| |
VFP9中显示存储在blob型字段中的图片 网上资源
fermos的博客 发表于 2005/7/1 19:25:35 |
VFP9中显示存储在blob型字段中的图片
VFP群:4001858
摘要
在vfp9中我们可以使用BLOB型字段存储任何类型的数据,包括ASCII文本,可执行文件(.exe),或字符串,而且对这些数据没有长度限制,当然,不能大于表容量。
存储在BLOB字段中的图片以在报表或表单上打印。
你可以通过使用Picture/OLE Bound控件来打印存储在BLOB字段中图片。这时你必须设置picture/ole bound控件的control source为一个image对象的引用,这个IMAGE对象的pictureval属性要设置为存储图片的blob型字段。
你也可以在表单上显示存储在blob型字段中的图片。这时你只需要将image控件放到表单上并设置image控件的pictureval属性为一个存储图片的blob型字段。
详细说明
在报表上显示图片
第一步 用报表设计器照下图设计一个报表
500)this.width=500'>500)this.width=500" border=0>
图1
其中姓氏,名子域控件的属性设置见图2,图3
500)this.width=500'>500)this.width=500" border=0>
图2
500)this.width=500'>500)this.width=500" border=0>
图3
注意,表达式编辑框中的 reporttemp表是一个临时表。
Picture ole/bound控件的属性设置如下图
500)this.width=500'>500)this.width=500" border=0>
图4
所有的设置完成后以文件名 blobpict.frx保存报表。
第二步 用代码定义一个报表监听器类。代码如下:
Local locdatadir As String&&数据路径
Local lcdir As String
lcdir=Addbs(Justpath(Sys(16)))
Cd (lcdir)
**创建一个IMAGE控件的实例并这个实例的pictureval属性设置为一个blob字段
orl=Newobject("previewlistener")&&创建一个报表监听器实例
orl.minitimg("reporttemp.图片")&&初始化image控件
lcdataDIR=Home()+'Samples\Tastrade\'
**生成临时表***
Select Cast( Alltrim( First_Name ) As Varchar ( 10 ) ) As '名子', ;
CAST( Alltrim( Last_Name ) As Varchar (10 ) ) As '姓氏', ;
CAST( Filetostr( lcdataDIR + Photo_File ) As Blob ) As '图片' ;
FROM ( lcdataDIR + 'data\Employee.dbf' ) ;
INTO Cursor ReportTemp
Select ReportTemp
**运行报表blobpict.frx
Report Form blobpict.frx Object orl
**定义报表监听器类**
Define Class previewlistener As ReportListener
loima=Null&&自定义属性
lcfil=""&&自定义属性
ListenerType=1
Procedure minitimg(lcfil1 As String)
This.loima=Newobject("image")
This.lcfil=lcfil1
This.loima.PictureVal=This.lcfil
Endproc
**为了确保picture ole/bound控件能随时记录的改变正确显示图片,应在报表监听器的beforeband事件中添加
**如下代码
Procedure BeforeBand(nBandObjCode, nFRXRecNo)
If nBandObjCode = 4 && Detail band
This.loima.PictureVal = Evaluate(This.lcfil)&&为image控件实例设置数据源
Endif
Endproc
Enddefine
好了,将上页的代码拷贝到一个程序文件中,运行。
效果如下图
500)this.width=500'>500)this.width=500" border=0>
说明:
要在报表中打印blob型字段中的图片,关键是将picture ole/bound控件的control source 属性设置为对image控件的引用。这个image控件的pictureval属性须设置为一个存储图片的blob型字段。在本例中control source属性为orl.loima,orl为对报表监听器的引用。loima是这个报表监听器的一个自定义属性,其值对一个对image控件的引用。 |
|
回复:VFP9中显示存储在blob型字段中的图片 网上资源
KWG(游客)发表评论于2009/1/7 20:15:45 |
太好了,不过其它字段的中文好像不能显示出来了,英文和数字就行,郁闷哈 |
|
» 1 »
|