学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询
来源:职称驿站所属分类:计算机应用论文 发布时间:浏览:109次
摘要:在实际应用中发现VFP对通用型字段的支持较差,本文分析了问题存在的原因,提出了一种解决的方法。
关键词:通用型字段;报表;打印
1通用型字段法及其不足
为了完成多媒体数据的输入输出处理,VFP提供了通用型字段,用于存储指向OLE对象的指针,允许用户存取图形、图像、声音、电子表格、文本或其它类型的数据。只要存储空间足够大,能够存储的数据理论上可以无限大,而实际存储的数据受限于内存空间。VFP本身并不能建立这些多媒体数据,通常要由其它Windows应用程序提供。VFP中的通用型字段用来存储OLE对象,OLE对象可在屏幕和报表上显示出来,VFP是OLE的客户,数据库的通用型字段内容是OLE对象的链接。要实现VFP与其它Windows程序的多媒体数据共享,有如下两种方式:
⑴以磁盘文件形式进行数据的传递和交换。
⑵使用Windows剪贴板的粘贴和复制功能,完成媒体数据的传递。
VFP中提供了两种方法向报表中添加图片,一种方法是使用表的通用型字段,另一种方法是使用文件。对于打印随着数据表记录的不同而发生变化的图片(如公司员工的照片),通常选择使用通用型字段法。在实际应用中,VFP对通用型字段的支持较差,主要表现在数据的存取和图片的打印质量问题。
1.1数据的存取问题
VFP并没有提供直接的方法来动态存取通用型字段中的数据,只有一条简单的APPENDGENERALFROM命令用来将磁盘上某个文件的内容写入通用型字段。但是,在实际应用中,作者发现这条命令仅仅可以将bmp和tif格式的图片数据读入通用型字段,而对于现在流行的一些图片格式(如gif、jpg等)却不支持。所以这条命令远远不能满足实际需要。为此,要将gif和jpg等格式的图片读入通用型字段,只有利用其它图像处理软件打开图像文件,并利用剪贴板的粘贴和复制功能将图像粘贴到通用型字段中。由于VFP并没有提供动态实现这一操作的方法,所以操作过程相当繁琐。
1.2图片的打印问题
作者在使用过程中发现,使用通用型字段方式存储的图片打印后的效果与预览时显示的效果差别很大,预览时非常清晰的图片,有时打印出来却变得模糊不清。此外,对同一个图像文件,同样是用剪贴板法来添加,使用看图软件打开后传递到剪贴板与使用图像处理软件(如Photoshop)打开后传递到剪贴板,效果相差很大,通常而言,后者要明显优于前者。
通过分析以上问题的原因发现,图片使用看图软件打开时,由于看图软件本身对图片数据的支持较弱,打开图片时会造成部分图像数据的丢失,而图像处理软件本身对图片数据提供了较强的支持,打开图片时图像数据丢失就极少,并且图像处理软件本身就有针对所用打印机进行优化的功能,所以打印出来的图片质量也高。同样,VFP的通用型字段存储的是指向OLE对象的指针,当使用通用型字段将图片嵌入报表时,图像经OLE控件解释展开时会造成部分图像信息丢失,所以图片打印质量较差。
2提高图片打印质量
使用VFP通用型字段向报表中添加图片存在着以上两个问题,这是由于VFP本身的特性所造成的,但鉴于VFP是目前一种广泛使用的数据库管理系统,作者尝试着使用其它方法提高打印质量,发现使用“来自文件”法向报表中添加图片可有效提高图片打印质量。通常情况下,我们使用“图片来自文件”的方法是用于向报表中添加不随记录改变而变动的图片,例如,公司的标志等。但在实践中发现,如果对报表文件加以设置,这种方法也可以实现使插入的图片随着记录的改变而变动。
通过分析报表文件的结构,就会发现报表文件其实也是一个数据表,可以使用USE命令打开,并用BROWSE命令浏览。在这个数据表中,报表文件上的每一个对象,对应这里的一条记录,用一系列属性来描述,对于来自文件的图片对象,图片文件的路径被保存在一个名为picture的属性中。为此,不难设想我们只需要在打印某条记录时,将报表文件的picture属性值修改为相应的图片的存储路径,这样就可以实现使图片随记录的变化而变化。其具体实现方法为:
⑴在报表控制工具栏中选定“图片/OLE捆绑控件”图标。
⑵单击图形起始位置,拖放鼠标,直至图片调整为适合的大小,然后松开鼠标,这时屏幕上出现“报表图片”对话框,其中在图片来源区中有两个选项“field”和“file”。
⑶若要打印来自通用型字段的图片,选择“field”,这里选择“file”,然后在后面的文本框中输入图片文件的路径,或单击省略号按钮选定一个文件。
经过对报表文件结构的分析,发现并不是只有图片对象才有picture属性,报表上很多其他对象也具有picture属性。这就涉及到一个问题,在报表文件中如何定位到图片对象的这条记录。作者又分析了报表文件的结构后发现,在报表文件中有一个comment字段,用于存放报表中对象的注释。于是作者提出了如下解决方法:
⑴在图片属性对话框中,给图片添加注释,例如“example”。
⑵建立一个数据表“图片”,包含两个字段“员工编号”、“图片位置”,如下图所示,并保存到系统默认目录中。其中“图片位置”字段用于保存图片的路径。
⑶假设报表文件为“报表1.frx”,执行下述程序代码:
PUBLICa
USE图片IN1
FORi=1TORECCOUNT()
SELECT1
GOi
a=ALLTt(图片位置)
USE报表1.frxin2
SELECT2
LOCATEFORcomment="example"
REPLACEpicturewith"'+a+'"
USE
REPORTFROM报表1toprinter
ENDFOR
需要注意,由于在执行REPORTFROM命令打印报表时,报表文件被独占打开,因此在打印报表之前,应先将其关闭。
3结论
采用了上面叙述的方法,不仅避免了使用剪贴板向通用型字段中添加图片的繁琐操作,而且由于使用文件将图片添加给报表时,图像不是经过OLE控件,而是经过系统提供的图形处理软件中的插件解释展开,为了对图片数据进行处理,VFP本身虽然没有进行图像处理的功能,但是它能够自动调用系统的图像处理软件,并针对所用打印机进行了优化,所以图像打印质量得到了提高。因此这种方法克服了使用VFP通用型字段法向报表添加图片的不足之处,提高了VFP报表的图片打印质量,使VFP的报表功能得到了增强,性能得到了优化。
参考文献:
[1]张玉华.VisualFoxPro6开发使用手册[M].北京:机械工业出版社,2008
[2]李加福,邸雪峰,桂敏文.VisualFoxPro6.0[M].北京:清华大学出版社,1999.
[3]王一平.实现VFP对多媒体数据的管理[J].南方冶金学院学报,2008,22(4)
[4]祁萌.VFP中利用OLE技术增强报表功能[J].扬州职业大学学报,2009,6
《刍议提高Visual FoxPro报表中图片的打印质量》
本文由职称驿站首发,您身边的高端学术顾问
扫码关注公众号
微信扫码加好友
职称驿站 www.zhichengyz.com 版权所有 仿冒必究 冀ICP备16002873号-3