第 9章 输入输出格式设计
第 9章 输入输出格式设计
9.1 用 @命令建立屏幕格式文件
9.2 打印机输出格式设计命令
9.3 标签输出
第 9章 输入输出格式设计
9.1 用 @命令建立屏幕格式文件
9.1.1设计屏幕输入格式
@命令和 READ命令配套,可设计出各种屏幕输入
格式 。
例 根据表 9 — 1,设计一个屏幕输入格式,来修改
,职工,DBF”库文件内容 。
第 9章 输入输出格式设计
程序如下,
CLEAR
@ 1,35 SAY[KG*2]“职工情况输入表,
USE职工
DO WHILE,NOT,EOF( )
@ 3,20 SAY,职工姓名, GET 姓名
@ 3,40 SAY,职工号, GET 职工号
@ 3,60 SAY,性别, GET 性别
@ 5,20 SAY,出生时间, GET 出生日期
@ 7,20 SAY,婚否, GET 婚否
@ 7,40 SAY,职称, GET 职称
@ 7,60 SAY,月工资, GET 工资
第 9章 输入输出格式设计
READ
SKIP
ENDDO
执行此程序时,将对, 职工,DBF”的所有记录逐一
按设计的格式在屏幕上显示修改 。 第一记录的编辑格
式如下,
职工情况输入表
职工姓名 胡一民 1 职工号 1002 性别 男
出生时间 01/30/60
婚否 T 职称 助工 月工资 85.00
第 9章 输入输出格式设计
9.1.2建立屏幕格式文件
用户设计的屏幕格式,可存放在屏幕格式文件中 。 需
要时,打开此文件以供使用 。
1,建立屏幕格式文件
屏幕格式文件实际上是一种特殊的命令文件,它只能
由 @语句,注释语句,CLEAR语句组成 。 因此,可用
MODIFY COMMAND命令建立之 。
命令格式, MODIFY COMMAND 〈 屏幕格式文件名 〉
但应注意,此命令的默认扩展名为,PRG,而屏幕格式
文件的系统默认扩展名为,FMT 或,PRX。
当然,也可用操作系统的编辑软件建立之。
第 9章 输入输出格式设计
例 1 屏幕格式文件, F.FMT”如下,
@ 3,20 SAY,职工姓名, GET 姓名
@ 3,40 SAY,职工号, GET 职工号
@ 3,60 SAY,性别, GET 性别
@ 5,20 SAY,出生时间, GET 出生日期
@ 7,20 SAY,婚否, GET 婚否
@ 7,40 SAY,职称, GET 职称
@ 7,60 SAY,月工资” GET 工资
第 9章 输入输出格式设计
2,屏幕格式文件的使用
(1) 打开屏幕格式文件 。 使用屏幕格式文件时,首
先应把它打开 。
命令格式, SET FORMAT TO 〈 格式文件名 〉 /?
在缺省扩展名时,系统默认为,FMT。
(2) 屏幕格式文件的使用 。 被打开的格式文件可供
READ命令使用 。 值得注意的是,当有格式文件打开时,
APPEND,INSERT,EDIT及 CHANGE命令也要以格式
文件的格式提供使用 。
第 9章 输入输出格式设计
例 2 G7.PRG程序如下,
USE 职工
SET FORMAT TO F
EDIT 2
执行这一程序,将显示出第二记录编辑格式 。 但显
示格式由屏幕格式文件, F.FMT”规定 。 本例显示如下,
职工情况输入表
职工姓名 王爱民 职工号 1004 性别 男
出生时间 10/05/39
婚否 T 职称 技师 月工资 128.34
第 9章 输入输出格式设计
例 3 G8.PRG程序如下,
USE 职工
SET FORMAT TO F
APPEND
执行后,屏幕显示如下,
职工姓名 职工号 性别
出生时间 / /
婚否? 职称 月工资
打开了屏幕格式文件后,将改变一些全屏幕编辑命
令的显示格式,但不影响这些命令的功能和执行过程 。
第 9章 输入输出格式设计
(3) 关闭屏幕格式文件 。 屏幕格式文件使用完后,
应及时使用关闭命令关闭 。 命令格式, CLOSE
FORMAT或 SET FORMAT TO&&无任选项
第 9章 输入输出格式设计
9.1.3 屏幕格式设计命令的常用格式
1,屏幕输出格式设计命令的常用格式
命令格式, @ 〈 行,列 〉 SAY〈 表达式 〉
[ PICTURE〈 短语 〉 ] [ FUNCTION〈 功能符 〉 ]
PICTURE选择项, PICTURE选项为用户提供了格
式化的输出能力,也可对输入数据给出限制 。 〈 短语 〉
可以由标准格式符或功能符组成 。
第 9章 输入输出格式设计
2,屏幕输入格式设计命令的常用格式
命令格式,@〈 行, 列 〉 [ SAY子句 ] GET〈 变
量名 〉 [ FUNCTION〈 功能符 〉 ]
[ PICTURE 〈 短语 〉 ] [ DEFAULT 〈 表达式 1〉 ]
[ ENABLE/DISABLE] [ MESSAGE
〈 字符表达式 1〉 ] [ RANGE[ 〈 表达式 2〉 ]
[, 〈 表达式 3〉 ]] [ VALID 〈 条件 1〉 ]
[ ERROR 〈 2〉 ] [ WHEN 〈 条件 2〉 ]
第 9章 输入输出格式设计
3,READ命令的常用格式
命令格式, READ[ ACTIVATE〈 条件 1〉 ]
[ DEACTIVATE〈 条件 2〉 ]
[ VALID〈 条件 3〉 ] [ WHEN〈 条件 4〉 ]
ACTIVATE,一执行 READ命令, 首先要判断
〈 条件 1〉 。 若为,T.,则执行 READ; 若为,F.,不执
行 。 〈 条件 1〉 一般由用户自定义函数组成 。
DEACTIVATE〈 条件 2〉, 当用户企图改变当前
READ窗口时,将判别 〈 条件 2〉 。 若为,T.,则允许改
变 ; 若为,F.,则不允许改变 。
第 9章 输入输出格式设计
4,READ的工作流程
当执行一条 READ命令时, 它的工作流程如下:
① 检查 READ语句中的 WHEN子句 。
② 激活第一个 GET窗 。
③ 检查 READ语句中 ACTIVATE子句 。
④ 检查当前 GET子句所属语句的 WHEN子句 。
第 9章 输入输出格式设计
9.1.4 屏幕格式设计命令的补充说明
1,@命令连用
几个 @命令连用时,后面 @命令规定的坐标可以在
前面 。
2,CLEAR GETS命令
命令格式, CLEAR GETS
功能, 在某 CLEAR GETS命令后的 READ命令,不去
编辑在此 CLEAR GETS命令前的 @命令给出的变量值 。
第 9章 输入输出格式设计
3,利用屏幕格式设计命令清除部分屏幕
(1) @ 〈 行,列 〉 。 执行该命令后,把在规定行上,从
规定列开始的内容全部清除 。
(2) @ 〈 行,0〉 。 该命令将清除规定行上的全部内容 。
(3) @ 〈 行,列 〉 CLEAR。 此命令将清除掉以 〈 行,列 〉
为左上角,直至桌面,或 FoxPro主窗口或用户自定义窗口右
下角的一个矩形的全部内容 。
(4) @ 〈 行,列 〉 CLEAR TO 〈 行,列 〉 。 此命令将清
除以两个坐标点为对点的一个方框 。
第 9章 输入输出格式设计
9.2 打印机输出格式设计命令
9.2.1 控制 @命令输出去向的命令 ——SET DEVICE
在 9.1 节中,@命令的执行结果只能在屏幕上显示,
即使接通打印机控制键, ^P”也不能把结果送打印机打
印 。 SET DEVICE命令可决定 @命令的输出去向 。
命令格式, SET DEVICE TO
SCREEN/PRINTER/FILE〈 文件名 〉 。
SET DEVICE TO SCREEN使 DEVICE为屏幕 。
SET DEVICE TO PRINTER使 DEVICE为打印机 。
SET DEVICE TO FILE〈 文件名 〉 使 DEVICE为
〈 文件名 〉 规定的文件 。
第 9章 输入输出格式设计
当 DEVICE为 SCREEN时,@命令结果只在屏幕显示 。
当 DEVICE为 PRINTER时,@命令结果只送打印机
输出 。
当 DEVICE为 〈 文件名 〉 规定的文件时,@命令结果
只送至此文件 。
此命令只对 @命令有效。 而 SET PRINTER命令和
^P只对其它输出命令生效。
第 9章 输入输出格式设计
9.2.2 打印机输出格式设计命令
打印机输出虽然与屏幕输出类似,但两者有着本质
的差别, 打印机不能从当前位置回跳到它前面的位置去
输出 。 例如,当打印机处在第二行上时,再想使打印机
回到第一行去打印输出数据将引起打印机的走纸换页 。
因而不可能利用打印机来编辑变量值 。
命令格式, @〈 行,列 〉 SAY子句
打印机格式设计命令即为屏幕输出格式设计命令 。
在使用中,应注意,
第 9章 输入输出格式设计
① 几个 @命令连用时,后面的 @命令的坐标值不能
小于前面 @命令的坐标值 。 否则,将引起打印机走纸
换页 。
② 命令中宜采用打印机当前行坐标函数 PROW( )
和当前列坐标函数 PCOL( )。 例如,
@PROW( ),PCOL( ) SAY,职工,
③ 为避免行坐标超长,打印机走纸,并方便调试,在
不使用 PICTURE〈 短语 〉 情况时,用,?”和,”命令
为佳 。
第 9章 输入输出格式设计
9.2.3 利用打印机格式设计命令设计输出报表实例
实际的应用系统中,常常需要大量的报表,其中尤
以二维报表最为常见 。 本节将给出设计二维报表的一
般方法,并以实例进行说明 。 熟悉了二维报表的设计
方法后,其它类型的报表也可较方便地完成 。
第 9章 输入输出格式设计
9.3 标签输出
9.3.1 建立标签格式文件
FoxPro提供了两个等效的建立标签格式文件的命
令 。 它们的常用格式为:
CREATE/MODIFY LABEL[ 〈 文件名 〉 /?]
这两条命令完全等价。 命令中的 〈 文件名 〉 的默
认扩展名为,LBX。
第 9章 输入输出格式设计
〈 文件名 〉 /?,若选择了 〈 文件名 〉,则建立 (若无此
文件 )一个标签文件,或编辑 (
若已有此文件 )一个标签文件 ; 若选择了?,则显示现
存标签文件,用户可选择一个进行编辑,也可键入一个
新标签文件名予以建立 。
执行这两条命令时,将打开一个标签编辑窗口如图
9 — 2。
第 9章 输入输出格式设计
图 9 — 2 标签编辑窗口
第 9章 输入输出格式设计
该窗口中显示了系统默认的标签布局数据 。
Margin,左页边空白列数 。 初始值为 0,选择范围
为 0~220。
Height,标签高度 。 初始值为 5,选择范围为 1~255。
Lines Between,上, 下标签间的行距 。 初始值为
1,选择范围为 0~120。
Spaces Between,相邻标签间的列间距 。 初始值为
0,选择范围为 0~220。
Number Across,横向打印的标签数 。 初始值为 1,
选择范围为 1~120。
第 9章 输入输出格式设计
Width,标签宽度 。 初始值为 35,选择范围为
1~255。
此时,用户可通过窗口编辑键对以上数据重新定义,
定义好后,按 ^W存盘。
第 9章 输入输出格式设计
9.3.2 标签输出命令 ——LABEL
命令常用格式, LABEL[ FORM〈 标签文件名 〉 /?]
[ FOR〈 条件 1〉 ] [ WHILE
〈 条件 2〉 ] [ 〈 范围 〉 ] [ TO PRINTER]
本命令将按照指定标签文件所规定的格式和内容,
为当前打开库文件中符合要求的记录制作标签 。
若缺省 〈 范围项 〉, 则等价于 ALL。
FORM〈 标签文件名 〉 /?,不带此项时,等同于此项
为?。 此时,将显示已有的标签文件,供用户选择 ; 若本
项为 FORM〈 标签文件名 〉,则用户指定了该标签文件 。
第 9章 输入输出格式设计
9.3.3 打印标签实例
以, 职工,DBF”库文件为例,为每个职工制作一个标
签 。
1,建立标签格式文件, GZBQ.LBX”
首先打开库文件, 职工,DBF”:
USE 职工 键入建立标签格式文件命令,
CREATE LABEL GZBQ
命令执行后,屏幕上将打开标签编辑窗口 。 通过
Tab键,重新定义标签宽度 Width为 20; 横向打印标签数
Number Across为 3。
第 9章 输入输出格式设计
2,输出标签
USE 职工
LABEL FORM GZBQ TO PRIN