一、如何制作主程序
主程序作为所编写程序的一个入口,其首先一个作用就是要设置程序的运行环境、定义变量、常量,然后进行其他的一些调用,如:设计菜单或登录画面等。下面的这个程序段给出了一个主程序设计的示例。
**设置运行环境
SET TALK OFF &&关闭命令显示
SET ESCAPE OFF &&禁止运行的程序在按 Esc 键后被中断
SET EXCLUSIVE OFF &&允许网络上的任何用户共享和修改网络上打开的表
SET HELP ON &&当按下 F1 键或在命令窗口中执行 HELP 命令时,显示帮助窗口
SET HELP TO Comp_Help.CHM &&指定帮助文件
SET CONSOLE ON &&将所有的结果输出到Visual FoxPro主窗口或活动的用户自定义窗口中
SET DATE ANSI &&指定日期表达式的显示格式为yy.mm.dd SET CENTURY ON &&设定日期中的年为4位数
SET SAFETY OFF &&指定在改写已有文件时不显示对话框 SET STATUS BAR ON &&打开Visual FoxPro状态栏 SET COLOR TO &&设置颜色为默认状态 SET SYSMENU OFF &&关闭系统菜单
SET MESSAGE TO \ &&指定在Visual FoxPro状态栏中显示的内容 CLEAR &&清除主窗口 CLEAR ALL &&清除变量
ON ERROR DO Err.PRG ; WITH ERROR(), ; MESSAGE(), ; MESSAGE(1), ; PROGRAM(), ;
LINENO(1) &&指定当出现错误时执行的命令
ON SHUTDOWN DO QuitAll.PRG &&指定退出Visual FoxPro时要执行的命令 ****开始进行程序的事务处理操作
DO FORM Begin &&运行版权画面表单Begin
READ EVENTS &&开始事务处理,第1个READ EVENTS
DO FORM Login &&打开登录表单
READ EVENTS &&开始事务处理,第2个READ EVENTS
WITH _Screen &&设置Visual FoxPro主表单为可见、最大化、标题、图标 .Visible=.T. .Closable=.T. .ControlBox=.T. .MaxButton=.T.
.MinButton=.T. .Movable=.T. .Top=0 .Left=0
.WindowState=2
.Caption=\专家库管理系统--操作员\ .Icon='MainFrm.ico' ENDWITH
PUBLIC tz_gj,ryzl,xtzd,dy,bfhf,about &&定义表单名称全局变量
*开始定义主菜单,注意:在Visual FoxPro 7.0中支持在菜单项中加入图标 SET SYSMENU TO
SET SYSMENU AUTOMATIC
DEFINE PAD _0lw07no93 OF _MSYSMENU PROMPT \文件(\\ DEFINE PAD _msm_edit OF _MSYSMENU PROMPT \编辑(\\ DEFINE PAD _0lw07no95 OF _MSYSMENU PROMPT \查看(\\ DEFINE PAD _0lw07no96 OF _MSYSMENU PROMPT \帮助(\\ ON PAD _0lw07no93 OF _MSYSMENU ACTIVATE POPUP 文件f ON PAD _msm_edit OF _MSYSMENU ACTIVATE POPUP _medit ON PAD _0lw07no95 OF _MSYSMENU ACTIVATE POPUP 查看v ON PAD _0lw07no96 OF _MSYSMENU ACTIVATE POPUP 帮助h DEFINE POPUP 文件f MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF 文件f PROMPT \人员资料(\\ MESSAGE \人员基本资料录入管理\ DEFINE BAR 2 OF 文件f PROMPT \系统字典(\\ MESSAGE \各种系统字典库管理\ DEFINE BAR 3 OF 文件f PROMPT \打印(\\ MESSAGE \打印各种人员资料报表\ DEFINE BAR 4 OF 文件f PROMPT \数据备份/恢复(\\ MESSAGE \备份/恢复人员数据资料\ DEFINE BAR 5 OF 文件f PROMPT \ DEFINE BAR 6 OF 文件f PROMPT \关闭(\\ PICTURE \ MESSAGE \关闭系统\ ON SELECTION BAR 1 OF 文件f do form ryzl name ryzl ON SELECTION BAR 2 OF 文件f do form xtzd name xtzd ON SELECTION BAR 3 OF 文件f do form dy name dy ON SELECTION BAR 4 OF 文件f do form bfhf name bfhf ON SELECTION BAR 6 OF 文件f quit DEFINE POPUP _medit MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR _med_undo OF _medit PROMPT \撤消(\\ MESSAGE \撤消上一次命令或操作\ DEFINE BAR _med_redo OF _medit PROMPT \重作(\\ MESSAGE \重复上一次命令或操作\ DEFINE BAR _med_sp100 OF _medit PROMPT \ DEFINE BAR _med_cut OF _medit PROMPT \剪切(\\ MESSAGE \移去选定内容并将其放入剪贴板\ DEFINE BAR _med_copy OF _medit PROMPT \复制(\\ MESSAGE \将选定内容复制到剪贴板上\ DEFINE BAR _med_paste OF _medit PROMPT \粘贴(\\ MESSAGE \粘贴剪贴板上的内容\ DEFINE BAR _med_clear OF _medit PROMPT \清除(\\ DEFINE BAR _med_slcta OF _medit PROMPT \全部选定(\\ MESSAGE \选定当前窗口中的所有文本或数据项\ DEFINE POPUP 查看v MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF 查看v PROMPT \工具栏(\\ DEFINE POPUP 帮助h MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF 帮助h PROMPT \帮助(\\ PICTURE \ MESSAGE \系统帮助\ DEFINE BAR 2 OF 帮助h PROMPT \关于(\\ ON SELECTION BAR 1 OF 帮助h do help.prg ON SELECTION BAR 2 OF 帮助h do form about ACTIVATE MENU _mSysMenu NOWAIT &&NOWAIT参数表示激活表单后继续执行程序 DO FORM Tz_gj NAME Tz_gj &&打开工具栏 **下面检测工具栏窗口是否已经打开,如果打开在菜单项的旁边加上√ SET MARK OF BAR 1 OF 查看v TO WEXIST(\ _SCREEN.AddObject(\ &&在Visual FoxPro主表单中加入图画 READ EVENTS &&开始事务处理,第3个READ EVENTS DEFINE CLASS BackImage AS Image Top=-30 Left=0 Picture=\ BackStyle=0 Visible=.T. ENDDEFINE 在上面的主程序设计中,包含了打开启动画面、登录画面和程序菜单的设计,以及设置程序运行环境参数和Visual FoxPro的主窗口(_Screen)的属性。 二、如何隐藏Visual FoxPro的主窗口 要隐藏Visual FoxPro的主窗口,需要使用Visual FoxPro的的配置文件Config.fpw,该文件用于设置Visual FoxPro的运行环境,请参考下面程序启动画面的设计,如图1-4所示。该表单的属性、方法设计请参考问题3的介绍,但需要注意的是,该表单的ShowWindow属性必须设置为2(做为顶层表单),如果使用缺省值1(在Visual FoxPro主窗口中),那么在隐藏Visual FoxPro主窗口的同时,该表单也就一起同样被隐藏了。 图1-4 版权画面Begin表单运行示例 到底是如何隐藏的呢?在Visual FoxPro的命令窗口中输入Modify file Config.fpw,在打开的文本编辑器中,输入:SCREEN=OFF,然后按Ctrl+W 键存盘退出,再把这个文件添加到项目管理器的Other Files中,如图1-5所示。 图1-5 把Config.fpw加入到项目管理器的Other Files中 这样在连遍成EXE可执行程序的时候,Config.fpw文件也就一同被打包到了EXE文件中。再运行EXE文件的时候,首先出现的就是你自己所设计的程序画面。 在Config.fpw中也可以进行其他一些常用项目的设置,如: 用于在Visual FoxPro启动时执行一个命令。如: COMMAND=DO Myapp.APP 指定Visual FoxPro的文件查找路径。如: PATH=DBFS; MENUS; FORMS 指定主窗口的标题。如: TITLE=\我的应用程序\ 指定系统的默认路径。如: DEFAULT=C:\\VFP 三、如何处理“不能退出FoxPro”的情况 由于在Visual FoxPro中要开始事务处理需要加入一个READ EVENTS语句,在想退出Visual FoxPro前,必须首先使用CLEAR EVENTS来结束事务处理,否则将提示“不能退出FoxPro”。我们知道,在普通表单中,CLEAR EVENTS可以放在表单的Unload事件中执行,但是对于Visual FoxPro主窗口(_Screen),系统一般是不允许你修改其事件过程的,对此,Visual FoxPro提供了一个ON SHUTDOWN命令,该命令用于指定当试图退出 Visual FoxPro时所要执行的命令。 首先来编写一个QuitAll.prg文件,代码如下: IF MESSAGEBOX(\确实要退出FoxPro吗?\提示\ CLEAR EVENTS &&结束事务处理 QUIT &&关闭Visual FoxPro ENDIF 在Visual FoxPro的命令窗口中输入:ON SHUTDOWN DO QuitAll.prg 单击主窗口的关闭按钮,这时将出现如图1-6所示的提示窗口,询问是否退出Visual FoxPro。 图1-6 关闭Visual FoxPro时的提示画面 可以将ON SHUTDOWN命令加入到主程序中,请参考问题2的主程序介绍。 通过为Visual FoxPro主窗口表单(_Screen)指定事件过程,如在Unload中加入CLEAR EVENTS和QUIT语句,也可以实现ON SHUTDOWN的功能,但是,为主窗口指定事件非常的烦琐,详细方法请参考问题16的介绍。