建立VFP应用程序

细心的读者,一定还记得在第一讲中提到过的“项目管理器”,在这一讲我们将通过“项目管理器”来建立一个简单的实例,并籍此说明一个完整的VFP应用程序的建立步骤。当您跟着心铃的叙述一步一步地操作后,您会发现VFP确实易学好用。

vfp9.gif (3898 字节)

一.建立应用程序的目录结构

即使一个很小的应用程序,也会涉及到多种类型的文件,如DBC数据库、DBF表以及菜单、表单、报表、位图等。如果把这些文件都放在一个目录下,将会给以后的修改、维护工作带来很大的不便。因此,我们需要建立一个层次清晰的目录结构,让不同类型的文件各归其所。请您建立如图4.1的目录结构,并将前几讲中创建的DBC数据库文件、DBF表文件和CDX索引文件移入DATAS目录中。

 

二.使用项目文件

VFP的常用工具栏中,单击“新建”按钮打开“新建”对话框,在该对话框的文件类型选项按钮中选择“项目”,单击“新建文件”,在弹出的“创建”对话框中,为新建的项目文件选择“VFP例程”目录,输入项目名“Student 并回车。

vfp10.gif (6095 字节)

如图4.2所示的“项目管理器”窗口是VFP开发人员的工作平台。在这里你能一目了然地看到组成你的应用程序的元素。

位于项目管理屏幕的右上角,有一个向下的箭头,允许你最小化或最大化该屏幕。如果不想显示项目管理器中的大部分内容,使它变成最小。当它变为最小时,选择其中一个卡片将显示一个较小的含有所选卡片的信息的窗口。如果需要更大的显示,再次单击该按钮(其中含有一个向上的箭头)以最大化窗口。

位于项目管理屏幕右侧的控制是用于管理项目的组成部分:

新建:创建一个新部件。

添加:选择一个已经存在的部件以包含到项目中。

修改:编辑高亮显示的部件,这与在一个项目元素上双击效果相同。

运行:运行高亮显示的部件。

移去:从项目中移去高亮显示的部件。

连编:建立一个应用程序。

再看看VFP的系统菜单,哈,多了一个新项:项目。选择菜单“项目/项目信息”,打开“项目信息”对话框。在此可以输入下面类型的信息:

 

三.增加项目元素

VFP应用程序至少需要:一个菜单、一个表单和一个主程序。当然数据库也是应用程序的一部分。下面我们将把这些元素依次添加到Student项目中去。(注:以下的操作均在项目管理屏幕中进行。)

vfp11.gif (20708 字节)

把数据库加入到项目中

单击“数据”选项卡并选中列表框中“数据库”项,再单击右侧的“添加…”按钮,在弹出的“打开”对话框中选取先前我们创建的STUDENT数据库,确认后,列表框中“数据库”项的左边出现一个加号,单击加号展开“数据库”项,可以看到student数据库已经被加入到项目中,依次展开“student”、“表”等项,便可利用右侧的命令按钮来进行打开、关闭或修改数据库,修改表结构,浏览表等操作了。如果事先没有建立数据库,也可用“新建…”命令按钮来创建一个。

2.建立表单

这里我们将尝试一下表单向导,正如您将感受到的,用表单向导建立表单既容易又有趣,相信您会喜欢它的。

单击“文档”选项卡并选中“表单”项,单击“新建…”,在弹出的“新建表单”对话框中单击“表单向导”,在弹出的“向导选取”对话框中选取“表单向导”列表项并确认,这时屏幕如图4.3所示。

vfp12.gif (32126 字节)

选中数据库student和表“学生情况”,单击双箭头按钮以移动“学生情况”中的所有字段到位于向导屏幕右部的“选定字段”列表中。用鼠标拖放选定字段左侧的拖动块可以改变字段在表单中的显示次序。单击“下一步”,进行表单样式的选择。在这里心铃选择了“浮雕式”和“图片按钮”。接着选取“xh”作为排序字段。最后,单击“预览”命令按钮来预览一下表单,如果不满意,可以用“上一步”命令按钮返回前面的屏幕重新选择;否则选取“保存并运行表单”,单击“完成”,在弹出的“另存为”对话框中,选择“FORMS”目录,并给此表单命名为“学生情况”,单击“保存”后可以看到完成后的表单如图4.4所示。移动鼠标到表单底部的图形按钮上,很快就会看到此按钮的提示文本,而屏幕底部的状态栏上有更详细的按钮用途说明。怎么样,作为一个仅花了几分钟的工作应该说很不错吧。

   3.添加一个菜单

  在应用程序中,尤其是Windows的应用程序中,菜单一般说来是必不可少的。单击“学生情况”表单的退出按钮以关闭表单并返回到“项目管理器”。单击最后一个选项卡“其他”,选中“菜单”列表项并单击右侧的“新建…”,在弹出的“新菜单”对话框中,单击“菜单”,则会出现“菜单设计器”屏幕。按照图4.5的提示输入完毕后,单击“菜单设计器”屏幕右上角的关闭按钮以存储菜单并退出。在“另存为”对话框中,选择“MENUS”目录并输入菜单名“menu”。

  4.加入主程序

我们几乎可以运行这个例子了。现在只需要一个控制整个项目的主程序。在“项目管理器”屏幕中单击“代码”选项卡,选中“程序”列表项,然后单击“新建…”,在弹出的“程序1”窗口中输入下面的代码:

CLEAR SCREEN

oldpath = SET("path")

=SETPATH()

OPEN DATABASE student

DO MENU.mpr

READ EVENTS

CLOSE DATABASE

SET SYSMENU TO DEFAULT

SET PATH TO &oldpath

RELEASE oldpath

 

FUNCTION SETPATH()

LOCAL lcSys16, lcProgram

lcSys16 = SYS(16)

lcProgram = SUBSTR(lcSys16, AT(":", lcSys16) - 1)

CD LEFT(lcProgram, RAT("\", lcProgram))

SET PATH TO PROGS, FORMS, MENUS, DATAS, BITMAPS, REPORTSLIBS

ENDFUNC

关闭“程序1”窗口,输入程序名‘MAIN’并选择“PROGS”目录存放,扩展名.PRG被自动加入并返回到项目管理器。用鼠标右键单击项并在弹出的快捷菜单中,选取“设置主文件”。设置后,‘MAIN’被加粗显示。此后VFP便以MAIN.PRG来启动应用程序。现在的应用程序能完成下列任务:

  1. 保存VFP原先的搜索路径,并设置应用程序的搜索路径。
  2. 打开数据库STUDENT,使“学生情况”表和其它表的关系可用。
  3. 用我们自己的菜单取代VFP的标准菜单。注意菜单是用它所生成的带有扩展名的代码,例如MENU.MPR来表示的。从这时起,我们设计的菜单将是屏幕上的唯一菜单,直到我们使用SET SYSMENU TO DEFAULT命令。
  4. 执行READ EVENTS命令。这样使表单和其它对象处于激活状态。命令在用户选择退出之前一直有效,EXIT执行CLEAR EVENTS命令。此时,控制立即传递给READ EVENTS命令后的语句。
  5. 从屏幕上移去所有遗留下来的表单。
  6. 关闭所有用户文件。
  7. 恢复原来的VFP菜单和搜索路径。

5.建立应用程序

在允许应用程序运行之前的最后一件事是生成它。单击位于项目管理器屏幕右侧按钮中的“连编…”。这时将出现如图4.6所示的对话框。

vfp13.gif (22181 字节)

“重新连编项目”读出应用程序的各种组成部分,建立项目文件,加入屏幕、程序和菜单中所引用的种种元素。我们可以在项目中只加入MAIN.PRG并让VFP重建该项目,它将会发现其它的组成部分。

“连编应用程序”建立一个带有扩展名.APPVFP的输出文件。“连编可执行程序”建立一个.EXE文件。它与.APP之间的区别在于:当运行一个.APP文件时,必须在VFP的基础上才能运行它。没有VFP的人可以使用.EXE的程序文件。如果生成了.EXE文件,要运行这个程序只需要使用程序名即可。“连编OLE DLL”是使用项目文件中的类信息,创建一个具有 .DLL 文件扩展名的动态链接库。此处我们选择“连编应用程序”。

“重新编译所有文件”用于保证项目中所有的元素都被重新构造。当文件被编辑时,操作系统改变文件的日期/时间标记。项目管理器比较所有元素在项目文件中的日期和在目录中的日期。如果在目录中的日期更新,该文件将被重新编译。因此,如果另一个开发人员修改了文件,但是他的系统的时钟不与你同步,有可能虽然他修改了文件,但是项目管理器认为不需要编译。

正常情况下,VFP把在编译过程所遇到的错误放在一个与应用程序同名但扩展名为.ERR的文件中。如果设置了“显示错误信息”,在构造应用程序的最后一步将打开一个编辑窗口显示错误信息。 如果愿意,也可以不设置,这样在有错误出现时的唯一指示将是“项目”菜单上的“错误”条变得可选。选择“错误”,将会打开错误窗口并显示编译错误。

单击“确定”,给项目文件命名为STUDENT,并选择“VFP例程”目录存放。到此为止,应用程序构造出来了。就让我们试一试吧。

四.运行程序

要运行这个程序,可以从菜单中单击“程序/运行”并选择STUDENT.APP,或者在命令窗口中输入:

DO STUDENT

可以看到,VFP的菜单变为一个新菜单,菜单中除了我们建立的两个菜单名外,可能还有一个菜单名“项目”,关闭项目管理器屏幕,此菜单名消失。单击“学生情况”,将会见到如图4.4所示的屏幕。有兴趣的读者可以根据屏幕底部的图形命令按钮的提示试着操作一下。退出“学生情况”屏幕后,单击“退出”菜单名,应用程序运行结束并恢复VFP的系统菜单。

OK!五分钟设计一个可以工作的程序,您是否觉得VFP更可爱了?

vfp14.gif (54255 字节)