B R O W S E 命 令
打开浏览窗口 显示当前或选定表的记录
语 法
BROWSE
[FIELDS FieldLis t]
[FONT cFontName [, nFontSize ]] [STYLE cFontStyle ]
[FOR lExpression1 [REST]] [FORMAT]
[FREEZE FieldNam e]
[KEY eExpression1 [, eExpression2 ]] [LAST | NOINIT]
[LOCK nNumberOfFields ] [LPARTITION]
[NAME Ob jectNam e] [NOAPPEND] [NODELETE]
[NOEDIT | NOMODIF Y ] [NOLGRID] [NORGRID] [NOLINK]
[NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT]
[PARTITION nColumnNumber [LEDIT] [REDIT]]
[PREFERENCE PreferenceNam e] [SAVE]
[TI M E O U T nSecond s] [TITLE cTitleTex t]
[VALID [:F] lExpression2 [ERROR cMessageText ]] [ W H E N lExpression3 ]
[ W IDTH nFieldWidth ]
[ W INDOW W indowName1 ]
[IN [WINDOW] W indowName2 | IN SCREEN]
[COLOR SCHEME nSchemeNumbe r ]
参 数 描 述
FIELDS FieldList
指 定 显 示 在 浏 览 窗 口 中 的 字 段 这 些 字 段 以 Fieldlist 指 定 的 顺 序 显 示 在 该字 段 列 表 中 可 包 含 其 他 相 关 表 中 的 字 段 在 包 含 一 个 相 关 表 的 字 段 时 应 在字 段 名 前 面 放 一 个 句 号 及 相 关 表 的 别 名
如果忽略 FIELDS 子句 表中的所有字段按其在表结构中出现的顺序显示
FONT cFontName [, nFontSize ]
指 定 浏 览 窗 口 的 字 体 及 字 体 大 小 字 符 型 表 达 式 cFontName 指 定 字 体 数 值型 表 达 式 nFontSize 指 定 字 体 大 小 例 如 下 列 子 句 指 定 显 示 于 浏 览 窗 口 的字 段 为 16 磅 Courier 字 体
FONT 'Courier',16
如果在包含 FONT 子句的同时省略了字体大小 nFontSize 则浏览窗口采用 10 磅字体如果省略 FONT 子句 则采用 8 磅 MS Sans Serif 字体
如果用户指定的字体不可用 则用具有相似字体特征的字体代替
STYLE cFontStyle
指 定 浏 览 窗 口 的 字 形 如 果 省 略 STYLE 子 句 则 采 用 常 规 字 形
如果指定的字形不可用 则使用具有相似特征的字形代替 或使用 Normal 字体
字 符 字 形
B 粗体
I 斜体
-
常规
-
轮廓线
Q 不透明
- 阴影
– 删除线
-
透明
-
下划线
可用多个字符的组合来指定字形 下例打开一个浏览窗口 并采用下划线字形
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && 打开 customer 表
IF _WINDOWS
BROWSE FIELDS contact FONT 'System', 15 STYLE 'NU' ENDIF
IF _MAC
BROWSE FIELDS contact FONT 'Geneva', 14 STYLE 'NU' ENDIF
FOR lExpression1
指 定 一 个 条 件 只 有 lExpression1 为 真 的 记 录 才 显 示 于 浏 览 窗 口
若 lExpression1 是一个可优化表达式 则 Rushmore 优化由 BROWSE FOR 指定的查询 为达到最佳性能 需在 FOR 子句中采用可优化表达式 其它相关信息 请参阅本书稍后 SET OPTIMIZE 命 令 和 Microsoft Visual FoxPro 6.0 中文版程序员指南 的第十五章 最优化应用程序
包含 FOR 子句使记录指针移向符合该条件的第一条记录 包含 REST 子句使记录指针处于当前位置
REST
防 止 在 FOR 子 句 打 开 浏 览 窗 口 时 记 录 指 针 从 当 前 位 置 移 向 表 顶 部 若 不包 含 REST 默 认 情 况 下 BROWSE 将 记 录 指 针 放 置 在 表 顶 部
F O R M A T
使 用 格 式 文 件 来 控 制 浏 览 窗 口 的 显 示 和 输 入 数 据 的 格 式 首 先 应 用 SET FORMAT 打 开 格 式 文 件 以 下 是 从 格 式 文 件 中 提 取 的 应 用 于 浏 览 窗 口 的信 息
-
要 浏 览 的 字 段 列 表
-
所 有 VALID 子 句
-
所 有 W H E N 子 句
-
所 有 RANGE 子 句
-
字
段 大 小 如 PICTURE 子 句 所 指 定
-
所
有 SAY 表 达 式 包 含 B R O W S E 计 算 结 果 字 段 段
下例采用格式文件检查输入到浏览窗口中的数据 忽略由 @ ... GET 指定的位置
第一行创建一个浏览字段 ( cust_id) 该字段为 5 个字符宽 并且只允许输入字母和数 字 第二行创建一个浏览字段 ( company) 该字段不能包含空 (blank) 值 且 最多只能包含 20 个字母字符
第三行创建一个浏览字段 ( contac t) 只在该字段为空 (blank) 时才输入数据
以下是 CUSTENTR.FMT 格式文件的内容 用于检查输入到 customer 表中的数据
@ 3,0 GET cust_id PICTURE 'NNNNN'
@ 3,0 GET company VALID company != SPACE(40) ; PICTURE 'AAAAAAAAAAAAAAAAAAAA'
@ 3,0 GET contact WHEN contact = SPACE(40)
* This is the program that uses the format file CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table
SET FORMAT TO custentr.fmt
BROWSE FORMAT
FREEZE FieldName
允 许 在 浏 览 窗 口 中 只 修 改 一 个 字 段 使 用 FieldName 指 定 该 字 段 其 他 字 段可 显 示 但 不 能 编 辑
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table BROWSE FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ; FREEZE phone
KEY eExpression1 [, eExpression2 ]
限制浏览窗口显示的记录范围 用 KEY 指定浏览窗口显示的记录的一个索引关键字值( eExpression1 ) 或关键字值的范围 (eExpression1 eExpression2 ) 所浏览的表必须已建立索引 并且索引关键字值或 KEY 子句的值必须与主索引文件或标识的索引表达式具有相同的数据类型
例 如 customer 表包含一个保存邮政编码的字符字段 如 果 该 表 已 建 立 邮 政 编 码 字 段 索引 则可在 KEY 子句指定邮政编码的范围
下例中 只有在 10,000 到 30,000 范围内的邮政编码记录才显示在浏览窗口
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table
SET ORDER TO postalcode BROWSE KEY '10000', '30000'
LAST | NOINIT
保存浏览窗口外观的任何变更 这些变更可保存于 FOXUSER 文件中 包括字段列表浏览窗口的位置及尺寸等内容的变更
如果用户发出带有 LAST 或 NOINIT 子句的 BROWSE 命令 在 SET RESOURCE 为 ON 的情况下 以最后保存于 FOXUSER 文件中的配置打开浏览窗口 恢复最后一个BROWSE 命令创建的浏览窗口 如果在命令窗口中最后发出的 BROWSE 命令带有一长串子句 那么使用包含 LAST 或 NOINIT 选项的 BROWSE 命令 可以避免重新键入命令 有关 FOXUSER 文件的详细内容 请参阅 SET RESOURCE
如果最后一个浏览窗口是由一个包含 PREFERENCE 子句的 BROWSE 命令打开的BROWSE LAST 将不再恢复原配置 如果用户按 CTRL+Q 退出浏览 则当前工作区中的浏览窗口配置的任何变更 都不会被保存 LAST 与 NOINIT 作用相同 NOINIT 是为与 dBASE 兼容而提供的
LOCK nNumberOfFields
指定不需滚动就能在浏览窗口左分区中 可 见的字段数 分区的大小可自动调整以显示
nNumberOfFields 指定的字段数
LPARTITION
指定光标位置在浏览窗口左分区的第一个字段 默认情况下 打开浏览窗口时 光标位于右分区的第一字段
N A M E Ob jectName
为 浏 览 窗 口 创 建 一 个 对 象 引 用 允 许 在 操 作 浏 览 窗 口 时 使 用 表 格 控 件 的 面 向对 象 属 性 有 关 在 V isual FoxPro 中 的 面 向 对 象 编 程 的 其 他 信 息 请 参 阅
M icrosoft Visual FoxPro 6.0 中 文 版 程 序 员 指 南 的 第 三 章 面 向 对 象 程 序设 计 有 关 您 能 够 为 使 用 N A M E 子 句 创 建 的 浏 览 窗 口 指 定 的 表 格 控件 属 性 的 内 容 请 参 阅 稍 后 的 表 格 控 件
NOAPPEND
禁 止 用 户 通 过 如 下 方 式 添 加 表 记 录 按 CTRL+Y 键 或 选 择 表 菜 单 的 追加 记 录 命 令
要 点 包 含 NOAPPEND 并 不 禁 止 用 户 在 程 序 中 向 浏 览 窗 口 中 添 加 记 录 由
VALID W H E N 或 ON KEY LABEL 等 命 令 创 建
NODELETE
禁止在浏览窗口中为记录作删除标记 默认情况下 按 CTRL+T 键 选择 Visual FoxPro 中的表菜单或 FoxPro 早期版本浏览菜单的切换删除标记项 或单击要删除的记录的最左边一列 可为记录作删除标记 包含 NODELETE 不禁止用户在程序中为浏览窗口中的记录作删除标记
NOEDIT | NOMODIFY
禁止用户修改表 NOEDIT 等同于 NOMODIFY 包含其中任何一个子句 用户可以浏览或搜索表 可以添加或删除记录 但不能编辑
NOLGRID
删除浏览窗口左分区中字段的网格线
NORGRID
删除浏览窗口右分区中字段的网格线
NOLINK
将浏览窗口的左右两部分断开联系 默认情况下 浏览窗口的左分区和右分区链接在一起 即 滚动其中一区时 另一区也随之滚动
N O M E N U
从系统菜单栏中删除 表 菜单标题 防止访问 浏览 菜单
NOOPTIMIZE
禁 止 B R O W S E 进 行 Rushmore 优 化 有 关 详 细 内 容 请 参 阅 稍 后 部 分 的 SET OPTIMIZE 命 令 以 及 M icrosoft Visual FoxPro 6.0 中 文 版 程 序 员 指 南 的 第 十 五 章 优 化 应 用 程 序
NOREFRESH
禁止对浏览窗口进行刷新 浏览窗口以 SET REPRESH 确定的速度进行刷新
NOREPRESH 对只读文件非常有用 并且可以改进性能
N O R M A L
使 用 正 常 的 默 认 设 置 打 开 浏 览 窗 口 如 颜 色 尺 寸 标 题 位 置 和 控 制 选 项如 GROW FLOAT Z O O M 等 等 如 果 省 略 N O R M A L 而 当 前 输 出 窗
口 为 用 户 自 定 义 窗 口 浏 览 窗 口 使 用 用 户 自 定 义 设 置
NOWAIT
打 开 浏 览 窗 口 之 后 继 续 运 行 程 序 程 序 不 必 等 待 浏 览 窗 口 关 闭 而 是 继 续 执 行BROWSE NOWAIT 之后的程序行 若在程序中发出 BROWSE 命令时省略 NOWAIT 则 浏 览 窗 口 打 开 后 暂 停 执 行 程 序 直 至 浏 览 窗 口 关 闭 NOWAIT 只用于程序中 在
命令窗口中发出 BROWSE 命令时包含 NOWAIT 无此作用
PARTITION nColumnNumber
将浏览窗口拆分为左右分区 nColumnNumber 指定拆分条所在的列 例如
nColumnNumber 为 20 则拆分条放置于浏览窗口的第 20 列
LEDIT
指定浏览窗口的左分区以编辑方式显示
REDIT
指 定 浏 览 窗 口 的 右 分 区 以 编 辑 方 式 显 示 下 例 打 开 浏 览 窗 口 使 拆 分 条 位 于第 20 列 并 以 编 辑 方 式 打 开 右 分 区
若同时包含 LEDIT REDIT 两个关键字 以编辑方式打开两个分区
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && 打开 customer 表
BROWSE PARTITION 20 REDIT
PREFERENCE PreferenceName
保 存 浏 览 窗 口 的 属 性 和 选 项 供 以 后 使 用 PREFERENCE 不 像 LAST 以 先 前工 作 区 中 出 现 的 方 式 打 开 浏 览 窗 口 而 是 将 浏 览 窗 口 的 属 性 随 时 存 储 于FOXUSER 资 源 文 件 中 PREFERENCE 可 在 任 何 时 候 恢 复
在 第一次发出带有指定设置的 BROWSE 命令时 在 FOXUSER 文件中创建一个保存浏览窗口配置的数据项 以后用同样的状态名发出 BROWSE 命令时 恢复浏览窗口该状
态 在浏览窗口关闭时 更新该状态
状态名可为 10 个字符长 必须以字母或下划线开头 可包括字母 数字或下划线的任意组合
如果您喜爱某种状态 可禁止其被更改 关闭浏览窗口 发出 SET RESOURCE OFF 命令 将 FOXUSER 作为一个表打开 并将逻辑字段 READONLY 的值更改为 真
(.T.) 可将包含状态的记录改为只读记录
有关 FOXUSER 资源文件的详细内容 请参阅 SET RESOURCE
若按 CTRL+Q 键退出浏览窗口 则资源文件不保存任何对浏览窗口的更改
S A V E
保 持 浏 览 窗 口 及 其 所 有 备 注 字 段 的 文 本 编 辑 窗 口 为 活 动 和 可 视 打 开 的 用 键 盘 或 鼠 标 访 问 其 他 打 开 的 窗 口 后 可 以 返 回 浏 览 窗 口 SAVE 仅 用 于 程序 中 在 命 令 窗 口 中 发 出 B R O W S E 命 令 时 包 含 S A V E 则 无 此 作 用 在 默认 情 况 下 BROWSE SAVE 以 交 互 方 式 工 作
TIMEOUT nSeconds
指 定 浏 览 窗 口 等 待 输 入 的 时 间 数 值 型 表 达 式 nSeconds 指 定 在 没 有 任 何 输 入的 情 况 下 浏 览 窗 口 保 持 多 少 秒 后 才 自 动 关 闭
TIMEOUT 仅用于程序中 在命令窗口中发出 BROWSE 命令时包含 TIMEOUT 则无此作用 下例中 如果在 10 秒内没有输入 则关闭浏览窗口
DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ; CLOSE ;
GROW ;
COLOR SCHEME 10 CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && 打开 customer 表
BROWSE WINDOW wBrowse ;
FIELDS phone :H = 'Phone Number:' , ; company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wBrowse
TITLE cTitleText
以 cTitleText 指 定 的 标 题 改 写 显 示 于 浏 览 窗 口 标 题 栏 中 的 默 认 表 名 或 别 名否 则 要 浏 览 的 表 的 名 称 或 别 名 显 示 于 标 题 栏 中
如果发出 BROWSE WINDOW 命令将浏览窗口置于用户自定义窗口中 则浏览窗口的标题替换用户自定义窗口的标题
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && 打 开 customer 表BROWSE;
TITLE 'M y Browse Window' ;
FIELDS phone :H = 'Phone Number' , ; company :H = 'Company:'
VALID lExpression2
在 浏 览 窗 口 中 执 行 记 录 级 有 效 性 检 查 VALID 子 句 仅 在 记 录 已 被 更 改 并 且 试图 将 光 标 移 至 另 一 记 录 时 执 行 如 果 只 是 对 备 注 字 段 的 更 改 不 执 行 VALID 子 句
如果 VALID 返回值为 真 (.T.) 用户可将光标移向另一记录 如果 VALID 返回值为 假 (.F.) 光标停留在当前记录上 Visual FoxPro 产生一条错误信息 如果VALID 返回值为 0 光标停留在当前记录上 但不显示错误信息
不要把 VALID 子句和启用字段级有效性的检验选项 ( :V) 相混淆
:F
在 用 户 将 光 标 移 至 下 一 个 记 录 之 前 强 制 执 行 VALID 子 句 这 种 情 况 下即 使 记 录 没 更 改 也 执 行 VALID
ERROR cMessageText
指 定 一 条 错 误 信 息 来 替 换 系 统 默 认 的 错 误 信 息 在 VALID 返 回 值 为 假
(.F.) 时 V isual FoxPro 显 示 cMessageText
W H E N lExpression3
在 用 户 把 指 针 移 到 另 一 条 记 录 时 做 出 评 估 若 评 估 为 真 则 用 户 可 以 修 改 将要 移 到 的 记 录 若 评 估 为 假 则 该 记 录 为 只 读 或 用 户 不 能 修 改 它
指 定 一 条 错 误 信 息 来 改 写 系 统 默 认 的 错 误 信 息 在 VALID 返 回 值 为 假
(.F.) 时 V isual FoxPro 显 示 cMessageText
在激活另一窗口时 不执行 WHEN 子句
W IDTH nFieldWidth
将 浏 览 窗 口 中 所 有 字 段 的 字 符 数 限 制 为 nFieldWidth 使 用 左 右 箭 头 或 水 平 滚动 栏 可 水 平 滚 动 字 段 内 容 使 用 W IDTH 子 句 并 不 会 修 改 表 中 字 段 的 大
小 而 只 修 改 字 段 在 浏 览 窗 口 中 的 显 示 方 式 如 果 已 由 FIELDS 子 句 指 定 一个 字 段 的 宽 度 它 将 替 换 W IDTH 子 句 所 指 定 的 该 字 段 的 宽 度
W INDOW W indowName1
指 定 一 个 用 户 自 定 义 窗 口 浏 览 窗 口 将 采 用 此 窗 口 的 特 性 例 如 如 果 该 用户 自 定 义 窗 口 是 由 FLOAT 子 句 创 建 的 则 浏 览 窗 口 可 移 动 所 指 定 的 窗 口不 需 要 是 活 动 的 和 可 见 的 但 必 须 是 已 定 义 的
IN [WINDOW] W indowName2
指 定 打 开 浏 览 窗 口 的 父 窗 口 该 浏 览 窗 口 并 不 采 用 父 窗 口 的 特 性 在 父 窗 口内 激 活 的 浏 览 窗 口 不 能 移 出 该 父 窗 口 如 果 父 窗 口 移 动 则 浏 览 窗 口 随 之 移动
要访问浏览窗口 必须首先用 DEFINE WINDOW 定义父窗口 而且父窗口必须是活动的和可见的
IN SCREEN
在 用 户 自 定 义 窗 口 为 活 动 窗 口 时 将 浏 览 窗 口 放 置 在 V iusal FoxPro 主 窗 口中
COLOR SCHEME nSchemeNumber
指 定 用 于 浏 览 窗 口 的 配 色 方 案 的 编 号
浏览窗口假定配色方案已由 W indows 的颜色控制面板建立
说 明
浏览窗口允许查看 编辑表中的记录 并追加额外的记录 Visual FoxPro 允许同时打开多个浏览窗口
若按 Esc 键退出浏览窗口 则放弃对最后一个字段所做的更改 然而 若在修改一个字段后移向另一记录 则可保存对此字段所做的更改
有关在 浏览 窗口中定位的信息 请参阅帮助中的 用户指南 第 二 章 创建表和索引
字段列表可以指定 为 字段或计算结果字段的任意组合字段列表的语法是
FieldName1 [:R]
[:nColumnWidth]
[:V = lExpression1 [:F] [:E = cMessageText]] [:P = cFormatCodes]
[:B = eLowe rBound, eUpperBound [:F]] [:H = cHeadingText]
[:W = lExpression2] [, FieldName2 [:R]… ]
计 算 结 果 字 段 … 字段列表可包含创建计算结果字段的语句 计算结果字段包含由表达式创建的只读数据 该表达式可以是任何格式 但必须是有效的 Visual FoxPro 表达
式
用于创建计算结果字段的语句格式为
CalculatedFieldName = eExpression
下面的示例创建一个名为 location 的计算结果字段
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE customer && 打开 customer 表
BROWSE FIELDS location = ALLTRIM(city) + ‘, ‘ + country
city 和 country 都是当前选定表的字段名
FIELDS 子句的字段列表包含对显示于浏览窗口中的字段进行特殊处理的选项
:R
指 定 字 段 为 只 读 字 段 可 显 示 但 不 可 编 辑 字 段 包 含 的 数 据
下例中打开的浏览窗口包含 cust_id 和 company 字段 Cust_id 字段为只读字段 不可更改
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE customer && 打开 customer 表
BROWSE FIELDS cust_id:R, company
: nColumnWidth
指 定 列 中 字 段 显 示 的 大 小 : nColumnWidth 值 不 影 响 表 中 字 段 的 大 小 只 影响 字 段 在 浏 览 窗 口 中 显 示 的 方 式
: V = lExpression1 [:F] [:E = cMessageText ]
检 验 选 项 ( : V) 在 浏 览 窗 口 中 执 行 字 段 级 数 据 有 效 性 检 查 若 从 一 个 字 段 移 去光 标 时 lExpression1 值 为 真 (.T.) 则 认 为 输 入 到 该 字 段 的 数 据 正 确
光 标 移 向 下 一 字 段
若 lExpression1 值为 假 (.F.) 则认为所输入数据不正确 光标停留在当前字段并显示一条错误信息 若 lExpression1 值为 0 则认为所输入数据不正确 光标仍停留在当前字段但不显示错误信息
对于备注字段不执行此检验选项
默认情况下 lExpression1 只在修改字段时求值 欲强制执行检验 需包括 :F 选项用户可包含下面所述的 :E 选项来显示自己定义的错误信息
:F
决 定 当 从 一 个 字 段 移 去 光 标 或 激 活 另 一 个 窗 口 时 是 否 对 检 验 选 项 中 的 表 达式 求 值 若 不 包 括 :F 则 lExpression1 仅 在 修 改 字 段 时 求 值 若 包 括 :F 则即 使 没 有 修 改 字 段 也 对 lExpression1 求 值
:E = cMessageText
如 果 有 效 性 检 测 表 达 式 :V = lExpression1 值 为 真 则 允 许 光 标 移 动 如果 该 表 达 式 值 为 假 光 标 停 留 在 当 前 字 段 V isual FoxPro 产 生 一 个 错 误信 息
如果包含错误选项 (:E) cMessageText 代替系统错误信息出现 CMessageText 仅在 SET NOTIFY 为 ON 时出现 若 SET BELL 为 ON 则响铃
如果 :V = lExpression1 值为 0 则不出现错误信息 光标停留于当前有效字段 这 使 得
用户可以在有效性检测例程中显示自己定义的错误信息
下例打开 products 表并显示 product_id 和 prod_name 字段 Product_id 字段是一个可接收 5 个数字的数值型字段 在该例中 假定 大于 100 的 product_id 是无效的
:V 指定有效性准则 不论数据是否更改 :F 都强制执行有效性检查 :E 使用用户自定义错误信息来代替 Visual FoxPro 系统错误信息 在 Visual FoxPro ForPro for Windows 和 FoxPro for Macintosh 中 错误信息显示于 Visual FoxPro 主窗口底部的状态栏中
按下 ESC 键可关闭浏览窗口
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE products && Open products table
IF _WINDOWS OR _MAC SET STATUS BAR ON
ENDIF
USE products
BROWSE FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = ‘ The stock amount must be less than 100 ’
:P = cFormatCodes
如 果 包 含 FIELDS 子 句 用 户 也 可 为 列 表 中 的 每 一 字 段 指 定 一 个 图 片 选 项(:P) 图 片 选 项 可 创 建 一 个 代 码 列 表 该 列 表 控 制 浏 览 窗 口 中 每 一 字 段 的 显示 和 数 据 输 入 CFormatCodes 即 为 代 码 列 表
下例采用图片选项 只允许 以 指定格式的数值型数据输入到 unit_price 字段中
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE products && Open products table
BROWSE FIELDS unit_price :P = ‘ 99,999.99 ’
有关图片选项代码的详细内容 请参阅稍后的 Format 和 InputMask 属性
:B = eLowerBound , eUpperBound [:F]
指 定 一 对 边 界 字 段 数 据 必 须 处 于 边 界 范 围 内 边 界 表 达 式 eLowerBound 和eUpperBound 必 须 与 字 段 的 数 据 类 型 匹 配 并 且 不 能 是 用 户 自 定 义 函 数 如果 数 据 不 处 在 eLowerBound 和 eUpperBound 之 间 则 出 现 一 条 系 统 错 误 信 息 指 出 数 据 允 许 的 范 围
默认情况下 仅在修改字段内容时对 输 入的数据作边界值检查 要想强制执行边界值检查 需包含强制有效性选项 (:F)
下例确保 in_stock 字段值处于 1 和 100 之间 按 ESC 键可关闭浏览窗口
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE products && Open products table BROWSE FIELDS in_stock :B = 1, 100 :F
: H = cHeadingText
用 cHeadingText 指 定 的 自 定 义 标 头 替 换 默 认 字 段 名 默 认 情 况 下 在 浏 览 窗口 中 用 字 段 名 作 列 标 头
下例为所显示的字段提供自定义列标头
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘ data\testdata ’ ) USE products && Open products table
BROWSE FIELDS prod_name :H = ‘ Product Name :’, ; unit_price :H = ‘ Price per Unit: ’
: W = lExpression2
根 据 逻 辑 表 达 式 lExpression2 的 值 用 户 可 以 禁 止 光 标 移 向 某 一 字 段 如 果lExpression2 值 为 假 (.F.) 则 禁 止 光 标 移 向 该 字 段 如 果 lExpression2 值为 真 (.T.) 光 标 可 移 向 该 字 段 LExpression2 支 持 用 户 自 定 义 函 数
如果禁止光标移向所有字段 则当前记录标记为只读记录 只有在每一字段均包含一个值为 假 的 WHEN 子句时 这种情况才出现
SET SKIP 支持 … 允许用户 在 两表之间 建立 一对多关系 对于父表中的每一条记录均可在子表中有多个相关记录 如果创建一对多关系 那么使用 BROWSE 命令可以查看父表和子表中的记录
一旦显示 父记录 子表的第一条匹配记录 接着显示 随后的任何匹配记录均在父记录和第一条匹配记录之后显示
如果记录指针位于一个父记录上 可以在浏览窗口中 按 CTRL+DOWN ARROW 可以将记录指针移动到后一个父记录 按 CTRL+UP ARROW 可以将记录指针移动到前一个父记录 有关一对多关系 请参阅稍后的 SET SKIP 命令
FIELDS 子句的字段列表包含父表和子表的记录 字段名前应加上表别名 orders 或
customer 和句点分隔符
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + ‘data\testdata ’) USE customer ORDER cust_id IN 0 && 父表USE orders ORDER cust_id IN 0 && 子表SELECT customer && 返回父表工作区
SET RELATION TO cust_id INTO orders && 创建关系
SET SKIP TO orders && 一对多关系
WAIT WINDOW ‘Scroll to see shipping dates for each customer’ NOWAIT BROWSE FIELDS customer.cust_id :H =’Customer Number’, ;
customer.city :H=’Customer City’, orders.shipped_on
有用的函数 … 几个 Visual FoxPro 函数返回 有关 浏览窗口的有用信息
函 数 说 明
请 参 阅
VARREAD( )
返 回 活 动 浏 览 窗 口 中 光 标 所 在的 字 段 名
RECNO( )
返 回 活 动 浏 览 窗 口 中 选 定 的记 录 号
C H A N G E , EDIT , Grid Contro l, SET SKIP , WTITL E ( )