VF动态报表的字段及内容解释

搞了半天基本上把这个VF报表字段的意思搞清楚了,不知对大家有没有作用,贴出来共享,肯定还有没考虑周全的地方,希望大家多多讨论与补充^_^

platform=”WINDOWS”
objtype = 8 且 objcode = 0 表示这是一个字段对象(expr为表达式)
objtype = 5 且 objcode = 0 表示这是一个标签对象(expr为标签内容)
objtype = 6 且 objcode = 0 表示这是一个线条对象
objtype = 7 且 objcode = 4 表示这是一个方框对象
objtype =17 且 objcode = 0 表示这是一个OLE
objtype = 9 且 objcode = 3 表示这是一个分组表达式
objtype = 9 且 objcode =0 增加标题带区
objtype = 9 且 objcode =8 增加总结带区
objtype=18 时 name=定义的变量名,expr=变量初始值
vpos 字段的纵向位置
hpos 字段的横向位置
height 字段的高度
width 字段的宽度(在组表达式中,表示小于这个值时从新的一页上开始)
fillchar 字段的类型
picture存放格式,例如”@Z”
comment存放备注
penred、pengreen、penblue、fillred、fillgreen、fillblue为颜色显示,一般值为-1
pensize=0、1、2、4、6表示细线、1、2、4、6磅
penpat值0、1、2、3、4、8,表示无、点线、虚线、点划线、双点划线、直线
fillpat值为方框的填充图形号
fontface 字体
fontstyle的数值从0到4,分别为(常规、粗体、斜体、粗斜体、下划线)128表示删除线
fontsize 字号
mode=1表示透明,mode=0表示不透明
folat=t 代表域控件位置为浮动
stretch=t 表示溢出时伸展
top=t 代表域控件位置为相对带区顶端固定
bottom=t代表域控件位置为相对带区底端固定
norepeat=t表示若是空白行则删除(在组表达式中表示每页都打印组标头)
pagebreak=t表示每组从新的一页上开始
resetpage=t表示每组的页号重新从1开始
resettotal值为1、2、5+I(I表示组编号,如组1为1)分别表示计算时重置到报表尾、页尾、组尾
offset值为0至2,表示格式为(左、右、中对齐)
offset为0、12、16、24、32、99分别表示矩形、圆角矩形1、2、3、4、5
totaltype的数值从0到7,分别为(不计算、计数、总和、平均值、最小值、最大值、标准误差、方差
supalways=t 且supvalchng=f打印重复值
supovflow=t表示当细节区数据溢出到新页/列时打印
suprpcol=3表示“在新页/列的第一个完整信息带内打印”,suprpcol=0表示否
supexpr存放打印条件表达式

---------------------------------------------------------------

翻出了以前的程序,奉献2个小函数,用于求串的打印宽度、高度(都是近似值)。用于确定报表中文本框的大小。


function strwidth(strlen,fontsize,maxwidth)
local r
r = fontsize/91.7strlen
if r>maxwidth
r=maxwidth
endif
return r


function strheight(strlen,fontsize,maxwidth)
local r
if strwidth(strlen,fontsize,maxwidth+1)>maxwidth
r = strwidth(strlen,fontsize,maxwidth100)
r= (int(r/maxwidth) + iif((r%maxwidth)>0,1,0))
else
r= 1
endif
r = r
(fontsize/9)*4.5
return r


---------------------------------------------------------------

我来帖一个收藏在我硬盘里的,先声明不是原创,供大家参考和研究:

Visual FoxPro中实现报表双面打印
--------------------------------------------------
在Visual FoxPro中,除了表文件以外,其他类型的文件,如数据库文件、表单文件、报表文件等也均可以以表的形式打开。例如,对于某报表文件R1,执行下列命令:
USE r1.frx
BROWSE

报表文件是有75个字段构成的,以.frx为扩展名的是“表”文件,扩展名为.frt的文件是相应的备注文件。报表“表”文件的部分字段的说明如表1所示。

其中,Vpos、Hpos、Height和Width字段值的单位为万分之一英寸; ObjType和ObjCode的值确定了报表中的对象类型。对于主要的报表对象来说,ObjType和ObjCode字段的取值如表2所示(注: 对于矩形控件,当OffSet字段的值大于0、小于81时,该控件为圆角矩形)。

在Visual FoxPro中,报表的双面打印主要要解决2个问题: 报表的分页与报表左边距的控制。
在设计时可以分为3步进行。
1.利用报表设计器设计一个报表(例如r1),用于打印奇数页(正面)。这时报表左边距等于装订线边距加报表右边距。
2.在同一张纸上,利用已设计的报表打印报表的第1、2页,测量出正反页的报表偏差(例如为0.8cm)。
3.利用如下形式的程序控制报表的打印。

LOCAL n, i, j
USE kmdm
&&假设报表数据环境为表kmdm.dbf
n=18
&&假设报表每页打印18条记录
GOTO BOTTOM
DO WHILE !MOD(RECNO(),n)=0
APPEND BLANK &&补齐报表
ENDDO
j= RECNO()/n
&&报表的页数
FOR i=1 TO j
IF MOD(i,2)=1 &&奇数页
REPORT FORM r1 PREV RANGE i, i
ELSE
SELECT 0
USE r1.frx
REPL hpos with hpos-0.83937 FOR InList(OBJTYPE,'5','6','7','8','17')
&&1cm=0.3937英寸
USE
REPORT FORM r1 PREV RANGE i,i
SELECT 0
USE r1.frx
REPL hpos with hpos-0.8
3937 FOR InList(OBJTYPE,'5','6','7','8','17')
USE
ENDIF
ENDFOR

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus