打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VFP动态定位打印表格

 

  在使用VFP设计应用系统的过程中,应用系统的表格输出部分一般都是在报表设计器下设计完成的,设计出来的表格,格式固定,位置固定。但在实践中我们发现:在一种打印机下调试设计出来的表格,换到另一种打印机时,表格的位置发生了变化,常常要靠移动纸张来解决。笔者经过多次测试后,利用编程解决了这个问题。

  笔者通过对VFP的报表文件进行分析,发现报表文件其实同数据表的结构是相同的。其中后缀为.frx的文件存放报表控件一些主要信息,而后缀为.frt的文件存放的是备注部份内容。这些文件都可以使用数据表的操作命令,可以使用VFP的命令和函数来改变报表控件中一些值的大小,如在VFP命令窗口中对一个盘中已存在的名为“干部登记表"的报表文件进行操作:

  USE 干部登记表.frx

  BROW

  这时我们看到的是一个数据表的内容列表方式,表中包含报表的字体、大小、颜色、对象性质等信息。这里我们关心的是各对象的位置参数,通过对这个数据表的测试、分析,可以得出objtype关键字段的信息。

  Objtype代表的是报表中的各控件的类型,下面列出的是报表设计器中各控件在数据表文件中的objtype的值:

控件名

objtype值

标签

5

域控件

8

线条

6

矩形

7

圆角矩形

7

图片/active绑定控件

17

(其中圆角矩形offset值为16,矩形为0)


  数据表中的vpos代表控件距报表左边的距离,hpos值为距报表最上边的距离,height值为控件的高度,width值为控件的宽度。

  当objtype为9时,为报表设计器中基本项,它们通过objcode来区分。下面是报表中的基本项的objcode的值:

基本项 objtype值
标题项 0
页标头项 1
细节项 4
页注脚项 7
总结项 8


  以上这些项的vpos、hpos值都为0,height值为高度(距上一项目的高度),width值一般都为零,实际宽度是由打印设置中的纸张大小决定的。

  当我们了解这些字段所代表的内容之后,在程序中我们只要增加或减少数据表中所有报表控件的vpos值,就可以增大或减小打印输出中的左边距;增加或减少数据表中所有报表控件的hpos值,同时增加或减少报表相关基本项的height值,就可以改变打印输出中的上边距。下面我们用一个简单的例子演示程序操作过程。

  一、利用报表设计器设计如图1的程序报表,报表命名为“干部登记表”。


  图1 干部登记表

  二、新建一个表单命名为“打印测试”,表单设计如图2。


  图2 打印设置表单

  表单中包括三个Lable控件,两个微调按钮,二个命令组按钮。

  在“改变位置”按钮的Click. Event 事件中加入如下代码,移动距离分别为上下移动数、左右移动数乘以392.7。

  SELE 0

   USE 干部登记表.frx

   GO 2

   REPL HEIGHT WITH HEIGHT+THISFORM.SXYD.VALUE*392.7

  &&移动标题项或页标头项的位置

   REPL VPOS WITH VPOS+THISFORM.上下移动数.VALUE*392.7 FOR (OBJTYPE>4 AND OBJTYPE<9) OR OBJTYPE=17

  &&移动报表中各控件的上下位置,移动数为“上下移动数”微调按钮中输入的值,值为正数向下移动,负数向上移动。

   REPL HPOS WITH HPOS+THISFORM.左右移动数.VALUE*392.7 FOR (OBJTYPE>4 AND OBJTYPE<9) OR OBJTYPE=17

   USE

  &&打开报表库后一定要关闭,不然在运行这个报表时要出错。

   THISFORM.上下移动数.VALUE=0

   &&执行后上下移动数归零

   THISFORM.左右移动数.VALUE=0

  &&执行后左右移动数归零

  “打印”命令按钮的Click Event 事件中加入如下代码:

  REPO FORM 干部登记表 TO PRINT NOCO

  “预览”命令按钮的Click Event 事件中加入如下代码:

  REPO FORM 干部登记表 PREV NOCO

  “退出”命令按钮的Click Event 事件中加入如下代码:

  THISFORM.RELEASE

  在运行该程序后,在打印纸放置位置不变的情况下,只需改变上下移动数、左右移动数的值,就可以改变打印纸上输出内容的位置。

  通过上面的介绍,我们可以在各类表格设计过程中,利用以上的方法,就可以生成灵活方便实用的各式报表。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
浅谈VFP报表打印问题
巧用VFP的Grid表格控件
VFP中多条件数据查询程序的实现
看实例学VFP:用sql语句修改数据表记录
Access教程 第五章 窗体
第九章 VB的数据库操作
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服