《以下两个函数,用于求串的打印宽度、高度(都是近似值)。用于确定报表中文本框的大小》
************************************************
function strwidth(strlen,fontsize,maxwidth)
local r
r = fontsize/9*1.7*strlen
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,maxwidth*100)
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
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.8*3937 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