股票诊断话术:浅谈VFP报表打印问题
来源:百度文库 编辑:偶看新闻 时间:2024/04/19 10:17:15
如何打印指定的页
通常情况下,VFP默认打印当前报表的全部内容,这给使用者带来不便,那么如何实现让系统打印指定范围的内容呢?其实很简单,只需在报表打印语句中加上关于打印范围限制的关键字短语RANGE即可。如:打印报表XXX.FRX的第2至第5页,可使用如下命令
REPORT FORM XXX.FRX RANGE 2,5 TO PRINTER
为增强该语句功能的灵活性,可引入表示欲打印范围的两个参数x和y,分别代表打印的起始和终止页码,将打印命令改写为
REPORT FORM XXX.FRX RANGE x,y TO PRINTER
2.如何计算总页数,以实现每页均打印“第x页 共y页”字样
VFP系统变量 _PAGENO 可提供当前的打印页号,但却没有能返回总页数的系统变量,若要实现在报表的每一页均打印“第x页 共y页”字样,打印前可根据细节区所打印的记录条数,进行计算,然后再打印,实现方法如下:
PUBLIC mPAGE
SELE XXX && XXX为欲打印报表的数据源
XX=35 && XX为每页报表细节区所打印的记录条数
mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1) &&mPAGE为报表总页数
在报表页脚注(或其他合适位置)添加如下信息即可:
"第 "+allt(str(_pageno))+" 页 共 "+allt(str(mPAGE))+" 页"
3.如何使计算机打印纸张类型适合于所设计报表
报表在设计时能够正常打印,可是安装到其他计算机或重装系统后,就会出现“XXX 带区太大不能放入页中”等提示,而且无法正常退出(尤其是对报表设计时采用自定义纸张的程序),这是为什么呢?现作如下解释:
我们用报表设计器设计的报表打印程序,保存退出后,磁盘上就会出现 .FRX和.FRT文件,我们的所有设计均保存在这两个文件中。在VFP中 .FRX相当于.DBF表,.FRT相当于.FPT备注型文件,我们用USE XXX.FRX可以象打开.DBF文件一样打开.FRX文件,在.FRX文件中有个Expr备注型字段名,在这个字段名中有如下与打印设置相关的内容(不同设置内容稍有差别):
DRIVER=winspool
DEVICE=Epson LQ-1600K
OUTPUT=LPT1:
ORIENTATION=0
PAPERSIZE=256
PAPERLENGTH=2800
PAPERWIDTH=2400
DEFAULTSOURCE=8
PRINTQUALITY=180
YRESOLUTION=180
TTOPTION=1
其中:
DEVICE=Epson LQ-1600K 表示系统默认打印机类型为Epson LQ-1600K
PAPERSIZE=256 该值256表示是自定义纸张(若=9 表示A4纸张、=13表示B5纸张)
PAPERLENGTH=2800 表示报表设计时纸张长度
PAPERWIDTH=2400 表示报表设计时纸张宽度
实际打印时之所以会上述提到的问题,是因为在用户环境中或Windows系统重新安装后,系统一般默认的是A4打印纸,与我们设计时保存在.frx文件里的纸张类型不符,因而造成打印出错。为此,笔者编写了如下一段检测纸张类型的代码,这段代码可以帮助我们很好地解决因纸张类型不符所带来的问题。
USE xxx.frx IN 0 ALIAS mFrx &&在空闲工作区以mFrx别名打开xxx.frx文件
x=atcline('PAPERSIZE',mFrx.Expr) &&取得参数PAPERSIZE在Expr字段中的行
mTYPE_1=subs(mline(mFrx.Expr,x),11) &&取得设计时保存的纸张类型
mTYPE_2=allt(str(Prtinfo(2))) &&取得当前打印机默认的纸张类型
x=atcline('PAPERLENGTH',mFrx.Expr) &&取得纸张长度在Expr字段中的行
mLEN=subs(mline(mFrx.Expr,x),13) &&取得纸张长度
x=atcline('PAPERWIDTH',mFrx.Expr) &&取得纸张宽度在Expr字段中的行
mWIDTH=subs(mline(mFrx.Expr,x),12) &&取得纸张宽度
use in 'mFrx' &&关闭xxx.frx文件
浅谈vfp报表打印问题
if mTYPE_1=mTYPE_2 &&如果相符,则正常打印
report form xxx.frx to printer noconsole
else
Messagebox('请设置打印机纸张类型为自定义:长='+mLEN+',宽='+mWIDTH,0+48+0,'提示')
report form xxx.frx to printer prompt
end
注:本文中相应命令和程序段均在VFP6.0环境下运行通过。 一个简易动态报表函数
*功能:根据当前工作区的表生成报表文件
*调用方法:DYNAMICREPORT([[<报表文件名>],[<报表标题>]])
*使用举例:
*USE MYTABLE
*DYNAMICREPORT('MYREPORT','我的动态报表')
*REPO FORM MYREPORT ......
*或:
*SELE ...... FROM MYTABLE INTO CURS TMP
*DYNAMICREPORT(,'我的动态报表')
*REPO FORM TMP_REPORT ......
PARAMETERS 报表文件名,报表标题 &&报表文件名不带扩展名,可缺省(缺省文件名为TMP_REPORT),报表标题可缺省
PRIVATE ALL LIKE L_*
WAIT '正在生成报表......' WINDOW NOWAIT NOCLEAR
IF TYPE('M.报表文件名')='L' OR EMPTY(M.报表文件名)
报表文件名='TMP_REPORT'
ENDIF
L_字符宽度9=625 &&FONTSIZE=9
L_字符宽度9粗=729.167 &&FONTSIZE=9,粗体
L_字符宽度16=1250 &&FONTSIZE=16(半角字符宽度为1250,半个全角字符宽度为1145.833,故由此算得标题居中位置并不准确)
L_域控件宽度修正9=370 &&由“L_字符宽度9”算得域控件宽度需加上此数值,才能完整输出
L_带区指示条高度=2083
L_标题区高度=IIF(TYPE('M.报表标题')='L' OR EMPTY(报表标题),0,5000)
L_页标头区高度=2400
L_细节区高度=2400
L_页标头区VPOS=L_标题区高度+IIF(L_标题区高度=0,0,L_带区指示条高度)
L_细节区VPOS=L_标题区高度+L_页标头区高度+IIF(L_标题区高度=0,1,2)*L_带区指示条高度
L_TMP=SYS(2015)
L_CA=SELECT()
COPY STRUCTURE TO (L_TMP) EXTE
CREATE CURSOR TMP (TMPFIELD C(1))
CREATE REPORT (报表文件名) FROM TMP
USE 报表文件名+'.FRX' EXCL
IF L_标题区高度#0
*添加标题区
INSERT BLAN
REPLACE PLATFORM WITH 'WINDOWS',OBJTYPE WITH 9,HEIGHT WITH L_标题区高度
ENDIF
LOCATE FOR EXPR='_PAGENO'
L_页面宽度=HPOS+WIDTH
*增高页标头区
LOCATE FOR OBJTYPE=9 AND OBJCODE=1
L_页标头区原高度=HEIGHT
L_页标头区增高=L_页标头区高度-HEIGHT
REPLACE HEIGHT WITH L_页标头区高度
*增高细节区
LOCATE FOR OBJTYPE=9 AND OBJCODE=4
L_细节区原高度=HEIGHT
L_细节区增高=L_细节区高度-HEIGHT
REPLACE HEIGHT WITH L_细节区高度
*标题区以下内容重定位
LOCATE FOR OBJTYPE=5
L_列标题高度=HEIGHT
*修改页注脚区内容垂直位置
REPLACE VPOS WITH L_细节区VPOS+L_细节区高度+L_带区指示条高度;
FOR VPOS>L_页标头区原高度+L_带区指示条高度+L_细节区原高度 AND INLIST(OBJTYPE,5,8)
*修改细节区内容垂直位置
REPLACE VPOS WITH L_细节区VPOS+L_细节区增高/2;
FOR BETWEEN(VPOS,L_页标头区原高度,L_页标头区原高度+L_带区指示条高度+L_细节区原高度)
*修改页标头区内容垂直位置
REPLACE VPOS WITH L_页标头区VPOS+L_页标头区增高/2;
FOR VPOS
*修改页注脚内容
CALCULATE MAX(HPOS) TO L_MAX FOR OBJTYPE=5 AND TOP
LOCATE FOR HPOS=L_MAX
SCATTER MEMV MEMO
REPLACE EXPR WITH ["第"],HPOS WITH L_页面宽度-10*L_字符宽度9,WIDTH WITH 2*L_字符宽度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["页"],HPOS WITH L_页面宽度-2*L_字符宽度9,WIDTH WITH 2*L_字符宽度9
LOCATE FOR EXPR=[_PAGENO] AND TOP
REPLACE HPOS WITH L_页面宽度-8*L_字符宽度9,WIDTH WITH 5*L_字符宽度9
LOCATE FOR EXPR=[DATE()] AND TOP
REPLACE HPOS WITH HPOS+11*L_字符宽度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["打印日期:"],HPOS WITH 0,WIDTH WITH 10*L_字符宽度9
*添加列标题标签控件、细节区域控件以及表格线
*先保存报表中基于TMPFIELD字段的标签控件和域控件记录,作为生成各列的标题标签控件和细节域控件的依据
LOCATE FOR UPPER(EXPR)=["TMPFIELD"]
SCATTER TO L_列标题记录 MEMO
DELETE
LOCATE FOR UPPER(EXPR)=[TMPFIELD]
SCATTER TO L_列细节记录 MEMO
DELETE
PACK
SELECT 0
USE (L_TMP)
L_报表宽度=0
L_HPOS=0
L_GAP=400 &&列与纵线之间的间隙
*设置纵线属性
OBJTYPE=6
EXPR=''
WIDTH=104.167
HEIGHT=L_细节区高度
PENSIZE=1
PENPAT=8
MODE=0
SCAN FOR FIELD_TYPE#'G' &&通用字段除外
L_列标题=TRIM(FIELD_NAME)
L_列标题宽=LEN(L_列标题)*L_字符宽度9粗
L_列细节宽=FIELD_LEN*L_字符宽度9+L_域控件宽度修正9
L_列宽=MAX(L_列标题宽,L_列细节宽)
L_报表宽度=L_报表宽度+WIDTH+2*L_GAP+L_列宽
L_类型=FIELD_TYPE
IF L_报表宽度>L_页面宽度
EXIT
ENDIF
SELECT (报表文件名)
添加纵线()
L_HPOS=L_HPOS+WIDTH+L_GAP
*添加列标题
APPEND BLANK
GATHER FROM L_列标题记录 MEMO
REPLACE EXPR WITH ["]+L_列标题+["],HPOS WITH L_HPOS,WIDTH WITH L_列标题宽
*添加列细节
APPEND BLANK
GATHER FROM L_列细节记录 MEMO
REPLACE EXPR WITH L_列标题,HPOS WITH L_HPOS,WIDTH WITH L_列细节宽,FILLCHAR WITH CHRTRAN(L_类型,'YFTBIM','NNDNNC')
IF FILLCHAR='N'
REPLACE OFFSET WITH 1
ENDIF
L_HPOS=L_HPOS+L_列宽+L_GAP
SELECT (L_TMP)
ENDSCAN
USE
SELECT (报表文件名)
添加纵线()
L_报表宽度=L_HPOS+WIDTH
*添加横线
HPOS=0
HEIGHT=104.167
WIDTH=L_报表宽度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS+L_页标头区高度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_细节区VPOS+L_细节区高度
IF L_标题区高度#0
*拷贝一个标签记录并改造成报表标题记录
LOCATE FOR OBJTYPE=5
SCATTER MEMV MEMO
L_标题宽度=LEN(M.报表标题)*L_字符宽度16
EXPR=["]+M.报表标题+["]
VPOS=1000
HPOS=MAX(0,(L_报表宽度-L_标题宽度)/2)
WIDTH=L_标题宽度
HEIGHT=2500
FONTSIZE=16
APPEND BLANK
GATHER MEMV MEMO
ENDIF
USE
SELECT (L_CA)
ERASE L_TMP+'.*'
WAIT CLEA
RETURN
PROCEDURE 添加纵线
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS,HPOS WITH L_HPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_细节区VPOS,HPOS WITH L_HPOS,STRETCH WITH .T.
RETURN
通常情况下,VFP默认打印当前报表的全部内容,这给使用者带来不便,那么如何实现让系统打印指定范围的内容呢?其实很简单,只需在报表打印语句中加上关于打印范围限制的关键字短语RANGE即可。如:打印报表XXX.FRX的第2至第5页,可使用如下命令
REPORT FORM XXX.FRX RANGE 2,5 TO PRINTER
为增强该语句功能的灵活性,可引入表示欲打印范围的两个参数x和y,分别代表打印的起始和终止页码,将打印命令改写为
REPORT FORM XXX.FRX RANGE x,y TO PRINTER
2.如何计算总页数,以实现每页均打印“第x页 共y页”字样
VFP系统变量 _PAGENO 可提供当前的打印页号,但却没有能返回总页数的系统变量,若要实现在报表的每一页均打印“第x页 共y页”字样,打印前可根据细节区所打印的记录条数,进行计算,然后再打印,实现方法如下:
PUBLIC mPAGE
SELE XXX && XXX为欲打印报表的数据源
XX=35 && XX为每页报表细节区所打印的记录条数
mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1) &&mPAGE为报表总页数
在报表页脚注(或其他合适位置)添加如下信息即可:
"第 "+allt(str(_pageno))+" 页 共 "+allt(str(mPAGE))+" 页"
3.如何使计算机打印纸张类型适合于所设计报表
报表在设计时能够正常打印,可是安装到其他计算机或重装系统后,就会出现“XXX 带区太大不能放入页中”等提示,而且无法正常退出(尤其是对报表设计时采用自定义纸张的程序),这是为什么呢?现作如下解释:
我们用报表设计器设计的报表打印程序,保存退出后,磁盘上就会出现 .FRX和.FRT文件,我们的所有设计均保存在这两个文件中。在VFP中 .FRX相当于.DBF表,.FRT相当于.FPT备注型文件,我们用USE XXX.FRX可以象打开.DBF文件一样打开.FRX文件,在.FRX文件中有个Expr备注型字段名,在这个字段名中有如下与打印设置相关的内容(不同设置内容稍有差别):
DRIVER=winspool
DEVICE=Epson LQ-1600K
OUTPUT=LPT1:
ORIENTATION=0
PAPERSIZE=256
PAPERLENGTH=2800
PAPERWIDTH=2400
DEFAULTSOURCE=8
PRINTQUALITY=180
YRESOLUTION=180
TTOPTION=1
其中:
DEVICE=Epson LQ-1600K 表示系统默认打印机类型为Epson LQ-1600K
PAPERSIZE=256 该值256表示是自定义纸张(若=9 表示A4纸张、=13表示B5纸张)
PAPERLENGTH=2800 表示报表设计时纸张长度
PAPERWIDTH=2400 表示报表设计时纸张宽度
实际打印时之所以会上述提到的问题,是因为在用户环境中或Windows系统重新安装后,系统一般默认的是A4打印纸,与我们设计时保存在.frx文件里的纸张类型不符,因而造成打印出错。为此,笔者编写了如下一段检测纸张类型的代码,这段代码可以帮助我们很好地解决因纸张类型不符所带来的问题。
USE xxx.frx IN 0 ALIAS mFrx &&在空闲工作区以mFrx别名打开xxx.frx文件
x=atcline('PAPERSIZE',mFrx.Expr) &&取得参数PAPERSIZE在Expr字段中的行
mTYPE_1=subs(mline(mFrx.Expr,x),11) &&取得设计时保存的纸张类型
mTYPE_2=allt(str(Prtinfo(2))) &&取得当前打印机默认的纸张类型
x=atcline('PAPERLENGTH',mFrx.Expr) &&取得纸张长度在Expr字段中的行
mLEN=subs(mline(mFrx.Expr,x),13) &&取得纸张长度
x=atcline('PAPERWIDTH',mFrx.Expr) &&取得纸张宽度在Expr字段中的行
mWIDTH=subs(mline(mFrx.Expr,x),12) &&取得纸张宽度
use in 'mFrx' &&关闭xxx.frx文件
浅谈vfp报表打印问题
if mTYPE_1=mTYPE_2 &&如果相符,则正常打印
report form xxx.frx to printer noconsole
else
Messagebox('请设置打印机纸张类型为自定义:长='+mLEN+',宽='+mWIDTH,0+48+0,'提示')
report form xxx.frx to printer prompt
end
注:本文中相应命令和程序段均在VFP6.0环境下运行通过。 一个简易动态报表函数
*功能:根据当前工作区的表生成报表文件
*调用方法:DYNAMICREPORT([[<报表文件名>],[<报表标题>]])
*使用举例:
*USE MYTABLE
*DYNAMICREPORT('MYREPORT','我的动态报表')
*REPO FORM MYREPORT ......
*或:
*SELE ...... FROM MYTABLE INTO CURS TMP
*DYNAMICREPORT(,'我的动态报表')
*REPO FORM TMP_REPORT ......
PARAMETERS 报表文件名,报表标题 &&报表文件名不带扩展名,可缺省(缺省文件名为TMP_REPORT),报表标题可缺省
PRIVATE ALL LIKE L_*
WAIT '正在生成报表......' WINDOW NOWAIT NOCLEAR
IF TYPE('M.报表文件名')='L' OR EMPTY(M.报表文件名)
报表文件名='TMP_REPORT'
ENDIF
L_字符宽度9=625 &&FONTSIZE=9
L_字符宽度9粗=729.167 &&FONTSIZE=9,粗体
L_字符宽度16=1250 &&FONTSIZE=16(半角字符宽度为1250,半个全角字符宽度为1145.833,故由此算得标题居中位置并不准确)
L_域控件宽度修正9=370 &&由“L_字符宽度9”算得域控件宽度需加上此数值,才能完整输出
L_带区指示条高度=2083
L_标题区高度=IIF(TYPE('M.报表标题')='L' OR EMPTY(报表标题),0,5000)
L_页标头区高度=2400
L_细节区高度=2400
L_页标头区VPOS=L_标题区高度+IIF(L_标题区高度=0,0,L_带区指示条高度)
L_细节区VPOS=L_标题区高度+L_页标头区高度+IIF(L_标题区高度=0,1,2)*L_带区指示条高度
L_TMP=SYS(2015)
L_CA=SELECT()
COPY STRUCTURE TO (L_TMP) EXTE
CREATE CURSOR TMP (TMPFIELD C(1))
CREATE REPORT (报表文件名) FROM TMP
USE 报表文件名+'.FRX' EXCL
IF L_标题区高度#0
*添加标题区
INSERT BLAN
REPLACE PLATFORM WITH 'WINDOWS',OBJTYPE WITH 9,HEIGHT WITH L_标题区高度
ENDIF
LOCATE FOR EXPR='_PAGENO'
L_页面宽度=HPOS+WIDTH
*增高页标头区
LOCATE FOR OBJTYPE=9 AND OBJCODE=1
L_页标头区原高度=HEIGHT
L_页标头区增高=L_页标头区高度-HEIGHT
REPLACE HEIGHT WITH L_页标头区高度
*增高细节区
LOCATE FOR OBJTYPE=9 AND OBJCODE=4
L_细节区原高度=HEIGHT
L_细节区增高=L_细节区高度-HEIGHT
REPLACE HEIGHT WITH L_细节区高度
*标题区以下内容重定位
LOCATE FOR OBJTYPE=5
L_列标题高度=HEIGHT
*修改页注脚区内容垂直位置
REPLACE VPOS WITH L_细节区VPOS+L_细节区高度+L_带区指示条高度;
FOR VPOS>L_页标头区原高度+L_带区指示条高度+L_细节区原高度 AND INLIST(OBJTYPE,5,8)
*修改细节区内容垂直位置
REPLACE VPOS WITH L_细节区VPOS+L_细节区增高/2;
FOR BETWEEN(VPOS,L_页标头区原高度,L_页标头区原高度+L_带区指示条高度+L_细节区原高度)
*修改页标头区内容垂直位置
REPLACE VPOS WITH L_页标头区VPOS+L_页标头区增高/2;
FOR VPOS
*修改页注脚内容
CALCULATE MAX(HPOS) TO L_MAX FOR OBJTYPE=5 AND TOP
LOCATE FOR HPOS=L_MAX
SCATTER MEMV MEMO
REPLACE EXPR WITH ["第"],HPOS WITH L_页面宽度-10*L_字符宽度9,WIDTH WITH 2*L_字符宽度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["页"],HPOS WITH L_页面宽度-2*L_字符宽度9,WIDTH WITH 2*L_字符宽度9
LOCATE FOR EXPR=[_PAGENO] AND TOP
REPLACE HPOS WITH L_页面宽度-8*L_字符宽度9,WIDTH WITH 5*L_字符宽度9
LOCATE FOR EXPR=[DATE()] AND TOP
REPLACE HPOS WITH HPOS+11*L_字符宽度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["打印日期:"],HPOS WITH 0,WIDTH WITH 10*L_字符宽度9
*添加列标题标签控件、细节区域控件以及表格线
*先保存报表中基于TMPFIELD字段的标签控件和域控件记录,作为生成各列的标题标签控件和细节域控件的依据
LOCATE FOR UPPER(EXPR)=["TMPFIELD"]
SCATTER TO L_列标题记录 MEMO
DELETE
LOCATE FOR UPPER(EXPR)=[TMPFIELD]
SCATTER TO L_列细节记录 MEMO
DELETE
PACK
SELECT 0
USE (L_TMP)
L_报表宽度=0
L_HPOS=0
L_GAP=400 &&列与纵线之间的间隙
*设置纵线属性
OBJTYPE=6
EXPR=''
WIDTH=104.167
HEIGHT=L_细节区高度
PENSIZE=1
PENPAT=8
MODE=0
SCAN FOR FIELD_TYPE#'G' &&通用字段除外
L_列标题=TRIM(FIELD_NAME)
L_列标题宽=LEN(L_列标题)*L_字符宽度9粗
L_列细节宽=FIELD_LEN*L_字符宽度9+L_域控件宽度修正9
L_列宽=MAX(L_列标题宽,L_列细节宽)
L_报表宽度=L_报表宽度+WIDTH+2*L_GAP+L_列宽
L_类型=FIELD_TYPE
IF L_报表宽度>L_页面宽度
EXIT
ENDIF
SELECT (报表文件名)
添加纵线()
L_HPOS=L_HPOS+WIDTH+L_GAP
*添加列标题
APPEND BLANK
GATHER FROM L_列标题记录 MEMO
REPLACE EXPR WITH ["]+L_列标题+["],HPOS WITH L_HPOS,WIDTH WITH L_列标题宽
*添加列细节
APPEND BLANK
GATHER FROM L_列细节记录 MEMO
REPLACE EXPR WITH L_列标题,HPOS WITH L_HPOS,WIDTH WITH L_列细节宽,FILLCHAR WITH CHRTRAN(L_类型,'YFTBIM','NNDNNC')
IF FILLCHAR='N'
REPLACE OFFSET WITH 1
ENDIF
L_HPOS=L_HPOS+L_列宽+L_GAP
SELECT (L_TMP)
ENDSCAN
USE
SELECT (报表文件名)
添加纵线()
L_报表宽度=L_HPOS+WIDTH
*添加横线
HPOS=0
HEIGHT=104.167
WIDTH=L_报表宽度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS+L_页标头区高度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_细节区VPOS+L_细节区高度
IF L_标题区高度#0
*拷贝一个标签记录并改造成报表标题记录
LOCATE FOR OBJTYPE=5
SCATTER MEMV MEMO
L_标题宽度=LEN(M.报表标题)*L_字符宽度16
EXPR=["]+M.报表标题+["]
VPOS=1000
HPOS=MAX(0,(L_报表宽度-L_标题宽度)/2)
WIDTH=L_标题宽度
HEIGHT=2500
FONTSIZE=16
APPEND BLANK
GATHER MEMV MEMO
ENDIF
USE
SELECT (L_CA)
ERASE L_TMP+'.*'
WAIT CLEA
RETURN
PROCEDURE 添加纵线
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_页标头区VPOS,HPOS WITH L_HPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_细节区VPOS,HPOS WITH L_HPOS,STRETCH WITH .T.
RETURN
VFP中打印报表时,如何在一个报表里关联两个数据表,详细见问题补充.
foxfro报表打印问题
如何实现VFP报表的镜像打印
如何实现VFP报表的镜像打印
vfp报表打印中怎样调整列的大小
vfp报表打印中怎样调整列的大小
关于打印报表的问题
请教一个vfp打印问题
vfp中怎样控制报表只打印最后输入的一条记录,并且只打印一条?
关于ACCSEE2000里打印报表的问题?
vb报表打印设计
vfp图片打印问题,如监考证,毕业证等等
VFP中的一个极其简单的打印问题
vfp的明细报表是指什么??
报表问题
报表问题
报表问题?
报表问题
报表问题?
报表问题
报表问题
水晶报表如何横向打印?
VF报表打印无边界
如何把报表打印出来?