如何自定义报表长度

zhaoshaom 2009-08-09 06:56:57
如何设置一张A4纸长度的一半,也就是自定义报表的长度。谢谢!十分急!!
...全文
165 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwxj 2009-08-16
  • 打赏
  • 举报
回复
还有一点要提醒的:
这段代码是要和sheettype和报表在同一路径下运行的,若不是,则必须要带相对路径。包括建立快捷方式
dfwxj 2009-08-16
  • 打赏
  • 举报
回复
我找一段代码给你啊,全自动的,自动添加自定义纸张,并且自动调整你的报表。
_SCREEN.LEFT=-10000
Application.VISIBLE=.F.
SET TALK OFF
SET CENT ON
SET DATE ANSI
SET SAFE OFF
SET ESCA OFF
SET EXAC OFF
SET DELE ON
SET RESOURCE OFF
if !file('sheettype.dbf')
retu
endi
SET Library To myfll
dflag=used('sheettype')
SELE paptype,papwidth,papheight dist from sheettype into curs tsheet
*读取纸张代号
SELE tsheet
SCAN
IF 'NT'$GETENV("OS")
paperid=paperadd(tsheet.paptype,tsheet.papwidth,tsheet.papheight)
IF paperid=0
paperid=paperinfo(tsheet.paptype,1)
ENDI
ELSE
paperid=256
ENDI
REPL papid with paperid for paptype==tsheet.paptype in sheettype
SELE tsheet
ENDS
SELE sheettype
SCAN
reportname=allt(sheetfile)
SELE 0
USE &reportname
LOCA for objtype=1 and objcode=53
*调整自定义纸张代号
frxset=expr
FRXSET=SUBST(FRXSET,1,AT('PAPERSIZE=',FRXSET)+9)+ALLT(STR(paperid))+SUBST(SUBST(FRXSET,AT('PAPERSIZE=',FRXSET)),AT(CHR(13)+CHR(10),SUBST(FRXSET,AT('PAPERSIZE=',FRXSET))))
FRXSET=SUBST(FRXSET,1,AT('ASCII=',FRXSET)+5)+ALLT(STR(paperid))+SUBST(SUBST(FRXSET,AT('ASCII=',FRXSET)),AT(CHR(13)+CHR(10),SUBST(FRXSET,AT('ASCII=',FRXSET))))
REPL expr with frxset
USE
SELE sheettype
ENDS
IF !dflag
USE in sheettype
ENDI
exename=sys(5)+sys(2003)+'\汇通管理.exe'
if file(exename)
CreateShortcut(exename,'汇通管理2.1',1,.f.,'','汇通担保管理系统')
endi
wait '汇通担保管理系统2.1初始化完成!'wind time 1
SET Library To
Application.VISIBLE=.T.
_SCREEN.LEFT=0
*rETU
QUIT
*********************************
这段代码在系统安装后做初始化,自动添加自定义纸张,并生成桌面快捷图标
前提:1、要有MYFLL.Fll支持;
2、sheettype是自由表,记录报表所用的纸张信息,每一种纸张一条记录;
sheetfile是报表文件名,必须是包括扩展名的完整名称;
paptype是纸张类型,就是手工添加时的格式名称;
papwidth,papheight纸张的宽和高,单位为mm;
papid是纸张代码,三位数字
3、所涉及的报表要设置为“排除”。


是这样使用的:
1、自己定义纸张,想怎么搞就怎么搞
2、将纸张的大小和报表名添加到sheettype的一条记录,并取一个纸张类型名(不能重复)
3、运行一下上面的代码就OK了。

代码是这样玩的:
1、根据你的要求在系统中新增一纸张,并返加纸张代码(这东西是最关键的)
2、将纸张代码替换到你的报表中。
l15939233714 2009-08-15
  • 打赏
  • 举报
回复
学习了
lblclly 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 firstxinjie 的回复:]
引用楼主 zhaoshaom 的回复:
如何设置一张A4纸长度的一半,也就是自定义报表的长度。谢谢!十分急!!


A4纸长度的一半是 A5.
[/Quote]
A4一半的好方案
不过如果是A4的1/3就得用其它通用自定义报表的方法了!呵呵.
firstxinjie 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhaoshaom 的回复:]
如何设置一张A4纸长度的一半,也就是自定义报表的长度。谢谢!十分急!!
[/Quote]

A4纸长度的一半 是 A5 .
kendysz 2009-08-14
  • 打赏
  • 举报
回复
高手很多呢
都市夜猫 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 firstxinjie 的回复:]
A4纸长度的一半是 A5.
[/Quote]
高!实在是高!
原来就一个 A5 横打
lblclly 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhaoshaom 的回复:]
控制面板-->打印机-->自定义纸张,转到VFP,报表-->页面设置-选择自定义纸张
自定义过后,在EPSON LQ300K+中找不到啊,叹....
[/Quote]
你把打印机的驱动改为EPSON LQ1600K应该就可以找到自定义纸张的类型了
zhaoshaom 2009-08-11
  • 打赏
  • 举报
回复
控制面板-->打印机-->自定义纸张,转到VFP,报表-->页面设置-选择自定义纸张
自定义过后,在EPSON LQ300K+中找不到啊,叹....
十豆三 2009-08-11
  • 打赏
  • 举报
回复
设置完报表后,清除报表打印机环境
VFP9.0以下:
Use 报表名.frx
Replace All Tag With '',tag2 With '' For Objtype=1
Use

VFP9.0
页面设置中清除打印机环境
打开报表后,Page Setup 中将 Page Layout 选项卡中的 Save printer environment 选项去掉

然后重新编译
十豆三 2009-08-11
  • 打赏
  • 举报
回复
自定义纸张操作方法

如果是win98 请通过,控制面板-->打印机-->自定义纸张,转到VFP,报表-->页面设置-选择自定义纸张

如果是win2000 或XP 请通过,打印机-->服务器属性-->格式-->创建新格式-->保存格式,转到VFP,报表-->页面设置-选择自定义的纸张格式
zhaoshaom 2009-08-11
  • 打赏
  • 举报
回复
有没有什么例子啊,本人就是不是很懂啊,是在winxp上的
十豆三 2009-08-10
  • 打赏
  • 举报
回复
A4纸长度的一半是固定的吗?
都市夜猫 2009-08-10
  • 打赏
  • 举报
回复
不同操作系统平台有不同的方法,例如,Win9X/Me 和基于 NT 的 Windows 实现方法不尽相同
既有手工实现的方法,也有编程实现的方法
编程实现既有使用 win2api 的方法,也有利用外部库(fll)函数的方法

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧