360 likes | 453 Views
Visual Foxpro 第十二章 应用系统的集成. 学习要点:. 12.1 菜单系统 12.2 设计菜单 12.3 应用系统的集成. 重点与难点:. 利用菜单系统设计菜单。. 本章主要介绍菜单系统的设计、应用系统的集成和应用软件的发布。. 12.1 菜单系统 12.1.1 菜单系统的基本结构 Visual FoxPro 的菜单有下拉菜单和快捷菜单两类。 1.下拉菜单 如同 Windows 菜单一样, Visual FoxPro 的下拉菜单是一个树形结构,列出了一个应用系统整个的功能框架,如图12-1所示。 菜单按层次可分为: 菜单栏 下拉菜单
E N D
Visual Foxpro 第十二章 应用系统的集成
学习要点: 12.1 菜单系统 12.2 设计菜单 12.3 应用系统的集成
重点与难点: • 利用菜单系统设计菜单。
本章主要介绍菜单系统的设计、应用系统的集成和应用软件的发布。本章主要介绍菜单系统的设计、应用系统的集成和应用软件的发布。
12.1 菜单系统 12.1.1 菜单系统的基本结构 Visual FoxPro的菜单有下拉菜单和快捷菜单两类。 1.下拉菜单 如同Windows菜单一样,Visual FoxPro的下拉菜单是一个树形结构,列出了一个应用系统整个的功能框架,如图12-1所示。 菜单按层次可分为: 菜单栏 下拉菜单 子菜单
2.快捷菜单 快捷菜单一般属于某个界面对象,如表单。当鼠标右键单击该对象时,就会在单击处弹出快捷菜单。如图12-2所示。 图12-2快捷菜单
12.1.2 菜单系统的设计步骤 • 不管应用程序的规模有多大,打算使用的菜单多么复杂,创建一个完整的菜单系统都需以下步骤: • ①规划系统 • ②利用“菜单设计器”创建菜单及子菜单。 • ③指定菜单所要执行的任务,例如显示表单或对话框等。 • ④选择预览按钮,预览整个菜单系统。 • ⑤从“菜单”菜单上选择“生成”命令,生成菜单程序以及运行某菜单程序,对菜单系统进行测试。 • ⑥从“程序”菜单中选择“执行”命令,然后执行已生成的MPR程序。
1.菜单系统的规划 在设计菜单系统时,需要考虑下列规则: (1)按照用户思考问题的方法和完成任务的方法来规划和组织菜单的层次系统,设计相应的菜单和菜单项,而不是按应用程序的层次组织系统。 (2)给每个菜单一个有意义的菜单标题。 按照估计的菜单项使用频率、逻辑顺序或字母顺序组织菜单项,或者干脆按字母顺序或拼音顺序组织,以方便用户使用。 (3)按功能将同一菜单中的菜单项分组,并用分隔线分隔。 (4)适当创建子菜单,以减少和限制菜单项的数目。 (5)为菜单、菜单项设置键盘快捷键。 (6)使用能够准确描述菜单项的文字。 应用程序的易用性与界面友好性一定程度上取决于菜单系统的质量。好的设计能很好地体现设计者的意图,易于为用户所接受和掌握。因此,遵循菜单系统的设计原则,花费一定时间仔细规划菜单,对应用系统的成功具有重要作用。 (7)为用户着想,针对一些常用功能,设计必要的快捷菜单。
2.使用菜单设计器 菜单的设计使用“菜单设计器”来实现。“菜单设计器”是Visual FoxPro提供的可视化菜单设计工具,既可以定制已有的Visual FoxPro菜单系统,也可以开发用户自己的菜单系统。 用户可用下列几种方法打开菜单设计器。 l方法一:从“常用”工具栏上单击新建按钮,从“文件类型”列表中选择“菜单”,然后单击新建文件按钮,出现“新建菜单”对话框,如图12-3所示。 l方法二:通过“文件”菜单。 l方法三:通过项目管理器。即从项目管理器中选择“菜单”,然后单击新建按钮。 l方法四:使用命令“MODIFY MENU <菜单名>”可以打开菜单设计器窗口,从而创建文件名为<菜单名>、扩展名为.MNX的菜单文件。 在Visual FoxPro中可以创建普通菜单和快捷菜单两种形式的菜单。在图12-3所示的对话框中,单击菜单或快捷菜单按钮,打开菜单设计器,即可创建下拉菜单和快捷菜单。 在设计普通菜单时,如果希望以Visual FoxPro菜单为模板创建自己的菜单,可从“菜单”菜单中选择“快速菜单”选项,如图12-4所示。 根据菜单设计时的规划,在菜单设计器中实现菜单系统,按需要编写初始化代码和清理代码等。
图12-3 “新建菜单”对话框 图12-4快速菜单 3.预览 在设计菜单时,可随时利用预览按钮观察设计的菜单和子菜单,此时不能执行菜单代码。 4.生成菜单程序文件 当通过菜单设计器完成菜单设计后,系统只生成了菜单文件(.MNX),而.MNX文件是不能直接运行的。若要生成菜单程序文件(.MPR),应选择“菜单”中的“生成”选项。如果用户通过项目管理器生成菜单,则应当在项目管理器中选择“连编”或“运行”,系统将自动生成菜单程序。
12.2 设计菜单 12.2.1 菜单设计器的使用 菜单设计器主要由以下几部分组成。 菜单名称——在此输入菜单的提示字符串。如果要为某菜单项加入热键,在预设定为热键的字母前面加上一个反斜杠和小于符号(\<)。如果不用这样的符号,那么菜单提示字符本身的第一个字母被自动当作热键的定义。此外,每个提示文本框的前面有一个小方块按钮,用鼠标拖动它可以上下改变当前菜单项在菜单列表中的位置。 结果——用于选定子菜单命令,结果框中共有4个选项:命令、填充名称、子菜单和过程。这些选项用于确定当选择该菜单项时,是打开一个子菜单,还是执行一个命令或过程。 选项按钮——单击该按钮将弹出“提示选项”对话框,如图12-5所示。 利用“提示选项”对话框可以设置用户定义的菜单系统中的各菜单项的属性。该对话框主要有以下几个选项: “快捷方式”区——用于指定菜单或菜单项的快捷键。菜单项的选择分成三种: l用鼠标选择菜单。 l定义访问键,如“编辑”菜单项,用Alt+E键选择。 l 定义快捷方式。设置快捷键的方法是:选择“键标签”中的“按下要定义的键”,再按下指定的快捷键,如Ctrl+S键,可以通过修改“键说明”来改变该菜单在应用程序中显示的内容。选中“键标签”中的文档,可以通过按其他键修改快捷键。
跳过——属于选择逻辑设计。在文本框中输入一个逻辑表达式,如果该表达式为.T.,表示当前菜单项不能被选中(呈灰色显示);如果该表达式为.F.,表示该菜单项可以选择。跳过——属于选择逻辑设计。在文本框中输入一个逻辑表达式,如果该表达式为.T.,表示当前菜单项不能被选中(呈灰色显示);如果该表达式为.F.,表示该菜单项可以选择。 信息——用来设计菜单项的说明信息。该说明信息将出现在状态栏中。注意:输入的信息必须用引号引起来。 主菜单名——对于一个菜单系统来说,菜单栏中每一个主菜单项都有一个提示, 还有一个该主菜单项的系统内部使用的名称。如果用户不指定,则系统随机给定一个惟一的名称。为了编程方便,用户可以指定主菜单项的系统名称。 备注——为菜单编写一些说明信息,主要用于阅读程序时使用。 l菜单级:在弹出列表框中显示当前所处的菜单级别。当菜单的层次较多时利用这项功能可得知当前的位置。并可方便地从子菜单返回到上面任意一级菜单。 l预览按钮:使用该按钮可观察所设计的菜单的外观。 l插入按钮:规定在当前菜单项的前面插入一新的菜单项。 l删除按钮:删除当前的菜单项。
12.2.2 主菜单中的“显示”和“菜单”下拉菜单中有关选项 1.“常规选项”对话框 当菜单设计窗口处于活动状态时,在系统菜单条上将出现“菜单”项,并在“显示”菜单中也新增加两个选项。“菜单”项中各个选项的含义十分清楚,下面主要介绍“显示”菜单中的两个新增选项。 当用户选择“显示”菜单中的“常规选项”时,将显示“常规选项”对话框,如图12-6所示。 图12-6 “常规选项”对话框
该对话框用于为整个菜单系统输入代码,主要由以下几个部分组成:该对话框用于为整个菜单系统输入代码,主要由以下几个部分组成: “过程”编辑框——在此输入菜单过程的代码。 “编辑”按钮——单击此按钮,将打开一个编辑窗口,输入菜单过程的代码。 “位置”区——包括如下4个按钮: l替换:将现有的菜单系统替换成新的用户定义的菜单系统。 l追加:将用户定义的菜单附加在现有菜单的后面。 l在……之前:将用户定义的菜单插入到指定菜单的前面。 l在……之后:将用户定义的菜单插入到指定菜单的后面。 菜单代码——它包含两个复选框: l设置:选中这一选项,打开一个编辑窗口,从中可为菜单系统加入一段初始化代码。若要进入打开的编辑窗口,按确定按钮关闭本对话框。 l清理:选中这一选项,打开一个编辑窗口,从中可为菜单系统加入一段结束代码。若要进入打开的编辑窗口,按确定按钮关闭对话框。 l 顶层表单:如果选定该复选框,允许该菜单在顶层表单中使用;如果未选定,则只允许在Visual FoxPro页框中使用该菜单。
2.“菜单选项”对话框 选择“显示”菜单中的“菜单选项”’时,将显示“菜单选项”对话框如图12-7所示。该对话框用于为菜单栏(顶层菜单)或各子菜单项输入代码,它包括以下几个选项: 名称栏——显示菜单的名称。 “过程”编辑框——该编辑框用于输入或显示菜单的过程代码。 编辑按钮——单击该按钮将打开一个文本编辑窗口,要进入打开的代码编辑窗口,按确定按钮,关闭“菜单选项”对话框。 图12-7 “菜单选项”对话框
12.2.3 下拉式菜单设计示例 1.设计下拉式菜单 【例12-1】 设计一个学生学籍管理系统菜单的菜单栏,如图12-8所示。 ①在命令窗口中输入命令“MODIFY MENU xjgl”,打开菜单设计器。 ②在菜单名称中依次输入“建数据库”、“查询统计”、“系统维护”、“打印输出”、“退出系统”五个菜单标题,如图12-9所示。 ③按Ctrl + W键保存菜单。单击“菜单”菜单中的“生成”命令,打开“生成菜单”对话框,如图12-10所示,然后单击生成按钮。 ④在命令窗口中输入并执行命令DO xjgl.mpr,则系统菜单改为用户定义的菜单。 ⑤在命令窗口中输入“SET SYSMENU TO DEFAULT”,则恢复为系统菜单。 图12-8学生学籍管理系统菜单的菜单栏
图12-9菜单设计器 图12-10 “生成菜单”对话框
【例12-2】 修改XJGL.MNX(如图12-11所示),要求单击“建数据库”菜单标题,显示一个下拉菜单。单击“创建数据表”,弹出JSJB.SCX表单,并设计快捷键为Ctrl + T;单击“创建数据库”,弹出JSJK.SCX表单;单击“退出”菜单标题,恢复到系统默认的菜单。 ①执行命令“MODIFY MENU XJGL”,打开菜单设计器。 ②为“建数据库”创建下拉菜单,选择菜单名称“建数据库”所在行的“结果”,选择“子菜单”,单击创建按钮,切换到子菜单的设计窗口,建立下拉菜单的两个选项“创建数据表”和“创建数据库”,如图12-12所示。 ③为“创建数据表”定义快捷键。选择“创建数据表”行中的选项按钮 ,在“提示选项”对话框的“键标签”中,用鼠标选中文字,按Ctrl + T键,再按确定按钮返回菜单设计器,如图12-13所示。 ④在“菜单级”中选择“菜单栏”,选择“退出”行中的结果列表的“过程”,单击创建按钮,在“过程”编辑框中输入以下代码: USE SET SYSMENU TO DEFAULT ⑤保存菜单,生成菜单,运行菜单,单击用户菜单退出,则恢复系统菜单的显示。
图12-11 学生学籍管理系统菜单 图12-12 “建数据库”下拉菜单设计 图12-13 “提示选项”对话框
2.将系统菜单引入用户菜单 如上所述,在“显示”下拉菜单的“常规选项”对话框的“位置”区域有4个单选按钮: l替换:默认,以用户菜单替换系统菜单。 l追加:用户菜单追加在系统菜单之后。 l在…之前:用户菜单追加在指定系统菜单标题之前。 l在…之后:用户菜单追加在指定系统菜单标题之后。 通过对选项的设置,能够实现将全部系统菜单、部分系统菜单及系统下拉菜单中的菜单项加入到用户菜单中,从而将Visual FoxPro的许多功能直接引入到用户系统中,以简化编程,提高应用系统的功能。 【例12-3】 将用户菜单添加到系统的“帮助”菜单之后的操作界面如图12-14所示。 图12-14 “常规选项”对话框
【例12-4】 将系统的“编辑”菜单引入用户菜单xjgl中,如图12-15所示。 ①在命令窗口中输入并执行命令“MODIFY MENU XJGL”,打开菜单生成器。选择“显示”菜单中的“常规选项”,选中“位置”中的追加单选按钮,选中“设置”复选框,单击确定按钮,在“设置”窗口中输入“SET SYSMENU TO _MSM_EDIT”。 ②生成并保存菜单,执行命令DO XJGL.MPR运行菜单。 【例12-5】 将“复制”菜单项加入到XJGL菜单的“建数据库”下拉菜单中,如图12-16所示。 ①在命令窗口中输入并执行命令“MODIFY MENU XJGL”,打开菜单生成器。单击“数据维护”行中的“结果”,单击编辑按钮。 ②在子菜单设计窗口,单击“插入栏”,在“插入系统菜单栏”对话框中选择“复制”,单击“插入”,再选择“粘贴”,再单击“插入”,最后单击“关闭”,就将“复制”和“粘贴”两个菜单项插入到用户菜单中。如图12-17所示。 ③保存菜单。 图12-15 将系统的“编辑”菜单引入用户菜单
图12-16将“复制”、“粘贴”菜单项加入到XJGL菜单图12-16将“复制”、“粘贴”菜单项加入到XJGL菜单 图12-17插入菜单系统栏
12.2. 4 快捷菜单 快捷菜单是单击右键才出现的菜单。菜单设计器只提供生成快捷菜单的结构,快捷菜单的运行需要从属于某个界面对象(如表单),并需要编程来实现。 【例12-6】 为表单上某文本框建立一个具有“撤消”、“剪切”、“复制”、“粘贴”和“清除”功能的快捷菜单。 ①打开“快捷菜单设计器”窗口,单击插入栏按钮,打开“插入系统菜单栏”对话框。 ②在“插入系统菜单栏”对话框中,先后选定“撤消”、“剪切”、“复制”、“粘贴”和“清除”选项,然后单击插入按钮,将它们一一插入。 ③在“撤销”和“剪切”之间插入“\<”菜单项。 ④打开“常规选项”对话框,选择“设置”复选框,在“设置”代码编辑窗口输入: PARAMETERS mRef 选择“清除”复选框,在“清除”代码编辑窗口输入: Release popups popmenu01.mnx && 这是本快捷菜单准备存盘的名字 ⑤保存菜单为菜单定义文件popmenu01.mnx和popmenu01.mnt。 ⑥单击系统菜单“菜单”栏下的“生成”菜单项,生成菜单程序popmenu01.mpr。 ⑦打开某个已有表单,选择一个文本框,添加该文本框的RightClick事件代码如下: DO popmenu01.mpr with THIS ⑧运行表单,在表单窗口的文本框中单击右键,出现快捷菜单。
12.3 应用系统的集成 在前面的学习中,我们已经学习了构造应用程序所需要的所有要素,利用这些要素条件,可以利用Visual FoxPro提供的功能强大的向导功能,十分方便地建立应用程序的框架,并为这个框架创建需要的界面和数据,最后可以将整个应用程序编译和集成,从而形成最终的程序。在编译和创建过程中,用户的每一个组件都需要进行严格的测试和调试,从而保证程序运行的正确性。 12.3.1 应用系统启动主程序的设计 每一个应用程序都需要设置一个主文件作为应用程序的起始点,这个主程序可以是一个程序或一个表单等。最常见的是用一个主程序去调用程序框架的各部分组件,从而实现对整个应用程序的控制。 设计启动主程序的基本思想是将启动程序分成4块: (1)初始化部分。 (2)显示初始的用户界面。 (3)控制事件循环READ EVENTS。 (4)现场恢复部分。
1. 初始化部分 初始化部分可分为存储各种环境变量、设置当前应用系统的环境变量、声明所有的全局变量、设置登录部分以及安排口令等。 2. 显示初始的用户界面 初始的用户界面可以是菜单或表单。在初始的用户界面之前可以显示应用系统欢迎界面及系统信息等。通常是使用DO命令运行一个菜单程序,或者使用DO FORM命令运行一个表单显示用户的初始界面。 3. 控制事件的循环 【命令】 READ EVENTS 【功能】 开始事件循环,等待用户操作。 【说明】 该命令用来启动所有已定义的控件,并开始处理事件,以取代以前的命令@…GET。程序中使用READ EVENTS就像一个死循环,一直等待用户的操作,直到接到CLEAR EVENTS命令为止。 4. 现场恢复部分 【命令】 CLEAR EVENTS 【功能】 恢复初始环境以前的环境。 【说明】 必须在应用系统中用CLEAR EVENTS命令来结束事件循环,使得Visual FoxPro能执行READ EVENTS后面的命令。
【例12-7】 编写学生学籍管理系统的初始化主程序。 *文件名:XJGL.PRG *代码如下: IF SET(TALK)="ON" && 如果原来设置为“ON” SET TALK OFF && 关闭TALK cTALKVal="ON" && 保存原来设置 ELSE cTALKVal="ON" && 否则设置不变 ENDIF PUBLIC m.gcNameSystem m.gcNameSystem="学生学籍管理系统" MODIFY WINDOW SCREEN TITLE m.gcNameSystem && 更换标题 PUSH MENU _MSYSMENU && 将系统菜单压栈 DO xjgl.mpr && 运行用户菜单 READ EVENTS && 激活事件触发器 POP MENU _MSYSMENU TO MASTER && 从栈中弹出系统菜单 CLEAR MEMORY SET TALK & cTALKVal && 使用宏恢复原设置 QUIT && 退出Visual FoxPro
12.3.2 项目集成 Visual FoxPro的应用向导为建立一个应用程序框架提供了强有力的工具。通过它可以方便地建立一个包括项目文件、数据库、报表和表单的应用。通过运行应用程序向导,建立一个完整的应用程序框架,然后做必要的修改进行客户化的工作。 完整的应用程序向导通常包括以下几部分: l选定项目位置。 l选择数据库。 l选择文档。 l定制菜单。 l完成。 用向导建立并编译应用程序的操作步骤如下: ①从“工具”菜单中选择“向导”,再选取“全部”,进入“向导选取”窗口,然后选择“应用程序向导”,如图12-18所示。 ②确定项目位置和项目名称。在如图12-19所示的对话框中,为新项目文件起名,并可通过浏览按钮确定新项目文件的位置。 ③添加和设置主程序:在项目管理器中,单击“代码”选项卡的“程序”,单击添加按钮,在添加对话框中选择事先编好的主控程序。将该主控程序添加到项目后,单击选定该文件名,然后单击“项目”菜单中的“设置主文件”命令,于是该文件被加黑,表示是项目的主程序,如图12-20所示。
④添加数据库、菜单、表单:在“数据”选项卡中添加数据库、自由表、查询等,在“文档”选项卡中添加表单,在“其他”选项卡中添加菜单。将本项目所需的所有文件分门别类地加入项目管理器中。④添加数据库、菜单、表单:在“数据”选项卡中添加数据库、自由表、查询等,在“文档”选项卡中添加表单,在“其他”选项卡中添加菜单。将本项目所需的所有文件分门别类地加入项目管理器中。 ⑤连编:连编是将应用系统制作成一种产品。单击连编按钮,出现如图12-21所示界面。 在连编选项窗口中,操作区的四个选项分别是: 重新连编项目——该选项对应于BUILD PROJECT命令,重新编译整个项目。 连编应用程序——该选项对应于BUILD APP命令,建立一个应用程序的.APP程序,这种程序不能离开Visual FoxPro系统环境执行。 连编可执行文件——该选项对应于BUILD EXE命令建立一个.EXE可执行文件,该程序可以离开Visual FoxPro系统环境执行。 连编COM DLL——创建动态链接库。 选项区复选框可以根据实际情况进行选择。若选择“连编可执行文件”,系统将生成该应用程序的可执行文件,可以脱离Visual FoxPro环境而独立运行。 ⑥运行可执行文件:若开始时没有将所有文件加入项目,只要将主要文件加入,连编时就会把被调用的相关的表单、菜单、报表文件自动加入到项目中。
图12-18 选择应用程序向导 图12-19选择项目位置和项目名 图12-20项目管理器 图12-21连编选项
12.3.3 应用程序的发布 完成应用程序的开发之后,就可准备发布该应用程序。发布应用程序的方法是包含所有需要的文件并创建发布磁盘。利用Visual FoxPro提供的“安装向导”,可以轻而易举地生成安装程序和发布磁盘。 在发布应用程序前,需要将所有应用程序和支持文件复制到一个目录下面,这个目录就称之为发布树。发布树用来存放用户运行时需要的全部文件,在创建发布磁盘之前,应将一些必要的系统支持文件拷贝到该目录中。包括: lVisual FoxPro运行时支持库Vfp6r.dll。 l特定地区资源文件:Vfp6rchs.dll(中文版)和Vfp6renu.dll(英文版),这些文件都在Windows的系统目录下,需要拷贝到发布树中。 下面以学生学籍管理系统的发布为例,介绍Visual FoxPro的应用程序的发布。 【例12-8】 学生学籍管理系统的发布。 操作步骤如下: ①建立发布树(目录),发布树用来存放用户运行时需要的全部文件,这里建立一个发布目录c:\xjfb,将一些必要的文件拷贝到该目录中。用户需要的文件包括: l项目连编以后的.exe程序。 l连编时未自动增入项目的文件,比如表文件(.dbf和.fpt)、数据库文件(.dbc和.dct)、索引文件(.idx和.cdx)都需要拷贝到发布树下。 lVisual FoxPro支持库Vfp6r.dll。
l 特定地区资源文件:Vfp6rchs.dll(中文版)和Vfp6renu.dll(英文版),这些文件都在Windows的系统目录下,需要拷贝到发布树中。 ②单击“工具”菜单中的“向导”,再选择“向导”菜单选项,进入安装向导。 ③安装向导步骤1:定位文件。单击“发布树”右边的…按钮,在“选择目录”对话框中选择c:\xjfb目录,单击下一步按钮。如图12-22所示。 ④安装向导步骤2:指定组件。要求指定必须包含的系统文件。这里选定“Visual FoxPro运行时刻组件”复选框。单击下一步按钮。如图12-23所示。 ⑤安装向导步骤3:磁盘映像。磁盘映像有两个含义:一是在软件发布整理过程中,将结果存放在何处,需要给出一个目录的名称。在这里选择d:\xjfb文件夹;二是选择介质。如果做成软盘方式,则选择“1.44MB 3.5英寸”复选框,表示将来做出来的软件以软盘方式存储。完成选择后,单击下一步按钮。如图12-24所示。 ⑥安装向导步骤4:安装选项。在安装对话框标题处输入“学生学籍管理系统”,执行程序“c:\xjfb\xjgl.exe”。如图12-25所示。
⑦上面几个安装步骤是主要的,后面的几步是可选的,可以不回答。最后在“完成”对话框中,单击完成按钮就可以压缩整理程序。⑦上面几个安装步骤是主要的,后面的几步是可选的,可以不回答。最后在“完成”对话框中,单击完成按钮就可以压缩整理程序。 ⑧磁盘映像复制到软盘上,经过上面的步骤,就在D:\XJFB目录中建立了磁盘映像,在其中的DISK144目录下,还有DISK1~DISK3三个子目录,供用户复制3张软件发布盘,将每一个子目录的全部文件复制到一张软盘中。 经过上述步骤建立的磁盘映像,可以复制一套又一套的软件发布盘。在发布盘DISK1中有一个SETUP.EXE,只要在Windows中运行该文件,就可以一步一步地进行应用程序的安装。
图12-22 安装向导步骤1 图12-23安装向导步骤2 图12-24 安装向导步骤3 图12-25安装向导步骤4
思考题 1.菜单在应用系统的作用如何? 2.如何创建菜单系统? 菜单设计的基本步骤是什么? 3.用户可为菜单项设置几种类型?其根据是什么? 4.菜单的“常规选项”和“菜单选项”的作用是什么? 5.菜单项的任务由什么定义? 如何定义快捷键? 6.一个完整的应用系统应如何组装? 7.Visual FoxPro应用程序的结构是怎样的? 8.主控程序起到了什么作用?如何设计? 9.为什么要创建发布磁盘? 10.什么是“发布树”?如何进行组织? 11.使用安装向导进行应用程序的发布,通常需要哪几个步骤?