(1)在菜单开始(SETUP)代码最后加入如图1所示循环起始语句:
do while.t.
(2)菜单的清楚(CLEANUP)代码如下所示:
read valid.f.
enddo
(3)退出菜单程序的代码如下所示:
close database
clear all
set sysmenu to default
cancel
应用系统中常常要用应用的名称代替FOXPROW主窗口中的标题“microsoft foxprow”,实现方法是在菜单开始(SETUP)代码的前面加入类似如下所示代码:
modify window screen at 4,6 size 36,147;
title“物资材料管理程序”
font“ms sans serif”,8 float close minimize
move window screen center
zoom window screen max
FOXBASE的下拉菜单(meun bar.……read menu to)是一种单任务性质的,在执行一个具体的模块时,菜单隐去,控制权在所执行的模块,不会发生模块的重复执行。而FOXPRO的条形菜单具有多任务的性质,同一模块,可重复执行,有时需要利用这一功能,但多数情况下是不需要的,这是因为同一模块或同时活动的多个模块经常处理的是同一类数据库或表,这样可能会因产生冲突而出错。因此,通常要求在执行一个模块时,不容许使用相同数据库文件的其他模块执行。这可以通过在菜单开始(SETUP)代码引入若干逻辑型内存变量,在菜单条中使用SKIP属性来实现。通过这种方式,可以使模块之间产生关联。
3 应用程序的信息输入
(1)屏幕生成器
屏幕和菜单类似,都有开始 (SETUP)、清除(CLEANUP)两个代码段,通过他们可以设置相应的环境或在屏幕(或菜单)退出时恢复环境。虽可以通过屏幕生成器中的 “ENVIRON-MEXT”按钮中的“SAVE”功能保存开发时的环境,但此功能有限,不便于进行复杂的设置,且其保存的开发时的环境可能与运行时不同,导致程序运行时出错。所以,建议编程人员不要用此功能,而使用前者。
屏幕中编写代码时,有两个层次,即屏幕层和屏幕中的对象层。通常的处理均可在对象层次中解决。屏幕层次中通常只使用开始(SETUP)、清除(CLEANUP)两个代码段,其他的代码段通常在多窗体、多屏幕中用到。在对象层次中,通常也只需要编写“VALID”代码。
(2)功能强大的BROWSE
使用过EXCEL的人都习惯对纵横表进行操作,这样操作直观、自然。在FOXPROW中,用BROWSE可以实现类似的功能。若要用BROWSE对表进行任意操作,用下面简单的命令即可:
use
browse title
这样的操作,表中的数据是不安全的,有必要对表的浏览操作加以限制。如在BROWSE命令中有选择性的加入NODE-LETE、NOAPPEND、NOMODIFY,就可以对“加删除标志”或“追加记录”或“修改记录”加以限制。
borwse titile nodelete noappend nomodity
(注:这条命令只能显示表的内容,不容许对表进行修改)
有时,表的字段名是西文字段名,或虽是中文字段,但表达的意思不易理解时,在浏览时需要给出易于识别的表头,这时就需要使用“:H=”的字段名修饰如下所示:
browse field name:h=“姓名”
(注:这里name是西文字段名,在显示时用“姓名”替换)
在BROWSE命令中加入NOMODIFY将锁定所有的字段,不容许修改。但通常的情况只要求锁定关键字段、关联字段,这时就不能用NOMODIFY,而要用“:W=.F.”字段名修饰功能。如下所示:
browse field name:h=“姓名”:w=.f.,
basic:h=“BASIC成绩”
(注:name字段不让修改
BROWSE的功能非常强大,读者可参看BROWSE的帮助提示。灵活应用BROWSE的子句以及一些修饰功能,可以实现极其强大的数据库的录入、编辑、修改功能。
4 应用程序的检索的实现
(1)按例关系查询
在开发环境或命令环境中,进行查询采用功能强大的RQBE是最优的选择,用他建立单表或多表查询均比较简单,介绍这方面内容的资料较多,在此,限于篇幅,不再赘述。由于在运行库中未集成RQBE特性,在开发应用时,请不要包含该特性。但用RQBE功能生成的SQL语句可用于应用系统中,减少编制查询模块占用的时间。将SQL语句中的字句的内容设置成变量,用“宏替换”功能可以构成某种程度上的通用查询模块。