VF主程序设计
应用程序一般都是多模块程序,可包含多个程序模块。模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块。通常,把被其他模块调用的模块称为子程序,把调用其他模块而没有被其他模块调用的模块称为主程序(一般将主程序设置为主文件进行系统连编);模块化便于程序的开发、阅读、维护,同时也有利于系统的运行效率的提高;
1 主程序设计
1.初始化环境
1 在完成VF的应用程序后,还需要对应用程序运行的系统环境进行设置,保证应用程序的正常运行。这些系统环境的设置一般都在应用程序的主程序或者CONFIG文件中完成。
2 主程序作为应用程序执行的入口,将为应用程序设置系统环境、运行启动界面和设置消息循环,从而使应用程序能够正常地运行。
3 主程序的主要作用就是为程序的运行设置合适的系统环境。包括文件路径、日期格式、菜单、状态栏、主窗口等内容。
4 VF系统环境的查看:工具---选项---按住shift键,单击确定按钮;
5 使用set命令、home()\sys()函数对系统环境进行设置;
6 在设置应用程序运行的系统环境时,除了使用set命令和options对话框之外,还可以将一些设置内容保存在一个或者多个config文件中。VF在启动之前将读取config文件中的内容,运行这些设置和命令,并用这些设置覆盖在options对话框中的默认设置。进行config文件设置可以使用下面的方法:使用set命令,设置系统变量,调用过程和函数。当启动VF时,系统将按顺序在下列位置并载入config文件(只载入一个);当前工作路径;2 VF的安装路径;3 在DOS的path命令列表中和路径。
7 从当前环境截取环境设置命令的方法:
(1)从工具菜单中选择"选项",按下Shift键同时选择"确定",则可以在"命令"窗口中显示环境的SET命令.
(2)从"命令"窗口中,将命令复制和粘贴到程序中.除了环境以外,在应用程序中通常还需要编写程序代码执行初始化变量,建立默认的路径,打开需要的数据库,表及索引等功能.
2.显示初始的用户界面
3.控制事件循环
控制事件循环的方法是执行READ EVENTS命令.在启动了事件循环之后,应用程序将处在所有最后显示的用户界面元素的控制之下,否则应用程序运行后可能显示片刻然后退出.
需要注意的是,在启动事件循环之前建立一个方法退出事件循环.
对于主程序设计具有一定的通用性,
一是对系统环境的设置;
二是对自定义菜单和工具栏的设计,以及启动时列出的画面或登录画面的设计。
在左边这段程序是建设银行计算机台帐的主程序序。
4.组织主程序文件
以下是一个简单的主程序:
SET DEFAULT TO D:\学生
SET SAFE OFF
SET CENTURY ON
CLEAR WINDOWS
CLEAR ALL
OPEN DATABASE 学生档案 EXCLUSIVE &&上面设置了文件的默认路径,数据库“学生档案”即在默认路径下;
USE 学生
DO FORM 启动画画.scx
READ EVENTS
SET SYSMENU TO DEFA
SET SAFE ON
SET CENTURY OFF
CLOSE ALL
CLEAR ALL
CLEAR WINDOWS
2 VFP主程序的一般写法
*-------------------main.prg
set talk off
set esca off
set exact off
set excl Off *设定表为共享方式
SET REPROCESS TO AUTOMATIC *设定数据加锁
set help to comp_help.chm *设定帮助文件
set cons on *激活从程序中向 Visual FoxPro 主窗口或活动的用户自定义窗口的输出。
set date ansi *设置日期格式
set score off *设定Num Lock、 Caps Lock 和 Insert 键状态
set safe off *关闭对话框
set stat bar on *打开状态栏
set cent on *设定日期格式年为4位数
set color to *设定配色方案
set sysmenu off *关闭系统主菜单
clea *刷新屏幕
clear all *清理变量
ON ERROR DO err.PRG *设定出错处理程序
on shutdown do quit1.prg *指定当试图退出FoxPro时,要执行的命令,否则提示不能退出FoxPro
with _screen *设定FoxPro主窗口属性
.visible=.f. *设定主窗口不可见
endwith
do form begin *执行启动画面(包括版权、版本、使用者等)
read event *占用进程,启动事件处理
do form login *执行登录表单,对用户进行身份验证
read event *占用进程
with _screen *对主窗口进行再次设定
.visible=.t.
.closable=.t.
.controlbox=.t.
.maxbutton=.t.
.minbutton=.t.
.movable=.t.
.top=0
.left=0
.windowstate=2 *将主窗口最大化
.caption='中国建设银行计算机台帐管理'
.icon='screen2.ico' *设定图标
endwith
编程所设初始环境的设置,供参考.
clea all
close all
SET TALK OFF
set hours to 24
SET DATE TO ANSI
SET CENTURY ON
SET ESCAPE OFF
SET DELETED ON
set status off
set safe off
set optimize on
set status bar off
SET UNIQUE ON
_SCREEN.CAPTION = '学生收费管理系统'
_screen.fontname='楷体'
_SCREEN.AUTOCENTER = .T.
_SCREEN.CLOSABLE = .t.
_SCREEN.WINDOWSTATE = 2
_SCREEN.SHOW
_SCREEN.ICON = 'note14.ico'
_SCREEN.picture = 'win.jpg'
如何隐藏VF的主窗口(_screen.visible=.f.)
在VF命令窗口中输入:modify file config.fpw,在打开的文本编辑器中输入:scree=off,保存添加到项目管理器中的其他-其他文件中。然后再连编到EXE文件中。也可以加上:title="cal";default=c:/vf;path=dbfs;menus;fdrms;
如何处理不能退出VF的情况
普通表单的clear events可以放在unload事件中执行,但对于VF主窗口(_screen)却不行。
1 quitall.prg代码如下:
if messagebox("确定要退出visualfoxpro吗?",4+32,"提示")=6
clear events
quit
endif
在主程序中加入:on shutdown do quitall.prg