五、表单设计
表单是VFP中最常见的界面,用户可以按照自己需要的方式进行设计,使显示、编辑和修改数据更加方便。系统提供了表单向导和表单设计器两种创建表单的方法,其中表单向导又分为表单向导和一对多表单向导,前者只能使用一个表或视图创建简单的表单;后者可以使用具有一对多关系的两个表来创建表单。
5.1 使用表单向导创建表单
(1)创建单一表单
例17 使用表单向导创建一个基于“通讯录”表的表单。
操作步骤一:打开“学生信息”项目文件,在“项目管理器”窗口中选择“文档”选项卡,并单击其中的“表单”选项,然后单击“新建”按钮,出现“新建表单”对话框。
操作步骤二:单击“表单向导”按钮,打开“向导选取”对话框,如图所示。

操作步骤三:“向导选取”对话框中列出了系统提供的两种向导:表单向导和一对多表单向导。由于为单个表创建表单,选取“表单向导”选项,然后单击“确定”按钮,这时启动“表单向导”,屏幕显示“表单向导”中的“字段选取”对话框。
操作步骤四:在“字段选取”对话框中,选取“通讯录管理”库中的“通讯录”表,并选取所需的字段,例如,将表的全部字段添加到“选定字段”框中。

操作步骤五:在选定字段后,单击“下一步”按钮,出现“选择表单样式”对话框。选取样式后,单击“下一步”按钮。
操作步骤六:在“排序次序”对话框中,确定表单记录的排列顺序,它的设置方法与查询和视图向导中的设置完全一样。如果选定的字段包含有重复值,则最多选择三个字段来进行排序,也可以选取一个索引标识来排序记录。例如,选取“编号”字段,按升序排序记录。
操作步骤七:选定排序字段后,单击“下一步”按钮,出现“完成”对话框。向导为用户提供了4种保存表单方式,根据需要选择一种方式保存单表。在“完成”对话框中,键入表单的标题(表单标题显示在表单标题栏中,而表单文件名是用来保存表单文件的,两者是不同的)。
单击“完成”按钮,在“另存为”对话框中为新创建的表单输入一个文件名,如“通讯录”,保存该文件,表单文件默认扩展名为.scx。在保存新创建的表单后,在“项目管理器”窗口的“文档”选项卡中,展开“表单”选项,选定新创建的“通讯录”表单文件,并单击“运行”按钮,运行结果如图所示。

从运行结果可以看到,表单中除了显示所有的字段外,还包括多个功能按钮,这些按钮由向导自动提供的。
(2)创建一对多表单
创建单一表单是基于一个表或视图的简单表单,在实际应用中,表与表之间往往存在多种关系,其中最常见的是一对多的表间关系,父表中的一条记录子表中有多条记录与它相对应,它们之间通过某一字段相关关联。
例18 利用向导创建“通讯录”表和“家庭成员”表一对多关系表单。
操作步骤一:在“向导选取”对话框中选取“一对多表单向导”,单击“确定”按钮,出现“一对多表单向导”的“从父表中选定字段”对话框。
操作步骤二:选择“通讯录”表为父表,并将编号、姓名、角色、性别和身高字段添加到“选定字段”框中。单击“下一步”按钮,出现“从子表中选定字段”对话框。


操作步骤三:选择“家庭成员”表为子表,并将全部字段添加到“选定字段”框中。子表字段选定以后,单击“下一步”按钮,出现“建立表之间的关系”对话框,如图所示。

操作步骤四:建立父表和子表的关联。一般选择父表中的主关键字段和子表中的某一字段相关联,这两个字段一般具有相同的字段名。运行时从子表中检索与父表主关键字段相匹配的所有记录,显示在数据表格中。例如,分别选取“通讯录”表和“家庭成员”表中的“编号”字段。单击“下一步”按钮,出现“选择表单样式”对话框,选择“浮雕式”。
操作步骤五:单击“下一步”按钮,出现“排序次序”对话框。选取“编号”字段,并按升排序。单击“下一步”按钮,出现“完成”对话框。在表单标题栏中键入“同学家庭成员”,并以“通讯录1”为表单文件名保存新创建的一对多表单文件。
运行新创建的表单。从运行结果可以看到,表单上半部分是父表“通讯录”表中的记录,下半部分是子表“家庭成员”表中与父表相匹配的数据记录。当父表中的记录变化时,子表中的记录也随之相应的变化,利用定位按钮来浏览父表和子表中的记录也是非常方便的。
5.2 使用表单设计器创建表单
(1)快速创建简单表单
使用“表单生成器”可以快速创建一个简单的表单。在使用“表单生成器”之前,必须先启动“表单设计器”,再创建表单。
例19 使用“表单生成器”快速创建基于“通讯录”表的简单表单。
操作步骤一:在“项目管理器”窗口中选择“文档”选项卡,选择“表单”选项,然后单击“新建”按钮,打开“新建表单”对话框,再单击“新建表单”按钮,打开“表单设计器”对话框,出现空白表单。
操作步骤二:在“表单设计器”窗口还有一个“表单控件”工具栏,它主要用来在设计表单时添加各种控件。单击菜单栏“表单”中的“快速表单”命令,或表单设计工具栏中的“表单生成器”按钮,打开“表单生成器”对话框。
操作步骤三:在“表单生成器”对话框的“字段选取”选项卡中选择数据库和表,例如,选择“通讯录”表,并将全部字段添加到“选定字段”框中,这时选定的字段作为控件添加到表单中,再在“样式”选项卡中选择一种样式。表单中各字段一般取字段名作标签。字符型、数值型、通用型字段生成一个OLE绑定型控件。
操作步骤四:在选定字段和样式后单击“确定”按钮,这时系统快速生成表单。
操作步骤五:关闭“表单设计器”,并以文件名“通讯录2”保存该表单文件。
(2)使用表单设计器创建表单
例20 设计的表单样式如图所示,表单中含有“通讯录”和“家庭成员”两个表中的字段。
操作步骤一:在“新建表单”对话框中,单击“新建表单”按钮,屏幕显示“表单设计器对话框。”
操作步骤二:在“表单设计器”对话框中,有一个标题为Fom1的空白表单(其大小可以调整)。单击“显示”菜单中的“数据环境”命令或表单设计工具栏中的“数据环境”按钮,打开“数据环境设计器”窗口,并打开“添加表或视图”对话框,分别将“通讯录”表和“家庭成员”表添加到“数据环境设计器”窗口中。(如果“添加表或视图”对话框已关闭,单击“数据环境”菜单中的“添加”命令可以将它打开。)
操作步骤三:“数据环境设计器”窗口如图所示。如果没有设置两个表之间的关联,将“通讯录”表中的主关键字段“编号”拖到“家庭成员”表中“编号”字段上。
操作步骤四:将“通讯录”表中的编号、姓名、角色、身高和照片字段依次逐个拖到表单中,如图所示。以文件名“通讯录3”保存所创建的表单。
(3)表单的定制
如果使用前面介绍的方法创建的表单不能满足自己的需要,可以亲自动手设计一个表单。设计表单时,需要在空白表单上添加表单控件。控件是表单中用于显示数据、执行操作命令或修饰表单的一种对象。VFP提供了丰富的表单控件,通过“表单控件”工具栏可以在表单上添加其中的控件。
启动“表单设计器”后 ,选择“显示”菜单中的“表单控件工具栏”选项,或在“表单设计器”工具栏下按钮,屏幕出现“表单控件”工具栏。
例21 设计一个如图所示的表单,表单中的数据来源于“通讯录”表。该表单中包含控件及其作用如表
表单控件及其作用
控件名称 |
作用 |
标签 |
用以显示文本的控件,描述有关信息 |
文本框 |
用来显示和编辑任何类型的数据,如字符型、逻辑型、日期型或日期时间型 |
编辑框 |
类似于文本框控件,不同的是可以容纳更多的字符,并且有垂直滚动条,通常用来显示或设置字符型数据,包括字符型内存变量、字段以及备注字段的内容 |
下拉列表框 |
又称组合框,以列的形式显示一组数据供用户选择,通常情况下只有一个条目是可见的。可以单击组合框的下箭头按钮打开条目列表,以便从中选择。组合框不提供多重选择功能 |
单选按钮组 |
用于建立一个选项组供用户选择,每次用户只能选择惟一的选项。与单选钮对应的是复选框 |
数值控件 |
在输入数值时,利用其上、下箭头的增减按钮来调整数值,也可以直接通过键盘在微调控件中输入数值 |
操作步骤一:添加标签控件。启动“表单设计器”后,按下“表单控件”工具栏中“标签”按钮,再将鼠标指针移到表单中,指针变成“+”字形,单击鼠标左键,在表单上产生了一个默认大小的标签。按下鼠标左键并拖动鼠标,可产生任意大小的标签,标签自动命名为Label1。
操作步骤二:单击“显示”菜单中的“属性”选项,或在“表单设计器工具栏中按下按钮,打开“属性”窗口。在Caption属性框中,输入标签标题,如“通讯录管理表单”,如图的示。
同样的方法添加编号、姓名、身高、角色、爱好标签。设置标签Label1的FontSize属性值为18,FontName属性值为宋体。
注意:当选择标签后(标签周边出现8个控点)就可以进行移动位置,设置字体大小(FontSize属性)、设置对齐方式等操作。添加标签后的表单如图所示。
操作步骤三:添加文本和编辑控件。按下“表单控件”工具栏中生成器锁定按钮,再按下文本框按钮。将指针移到“编号”标签右侧,单击左键,添加一个广西框Text1,并启动“文本框生成器”对话框,如图所示。
说明:“文本框生成器”对话框中包括“格式”(文本框界面设计)、“样式”(文本框排列方式设计)和“值”(选择一个字段保存文本框的值,对应“属性”窗口中的ControlSource属性。例如,“字段名”对应“通讯录”表中的“编号”字段)3个选项卡。在使用“表单控件”工具栏添加控件前,如果按下生成器锁定按钮,则在添加部分控件时,屏幕出现相应的生成器对话框,系统要求设置一些与控件有关的属性。
操作步骤四:单击“确定”按钮,完成文本框控件的添加操作。(用同样的方法在“姓名”标签右侧添加文本框,并设置数据类型为“字符型”,绑定字段为“姓名”字段)
操作步骤五:添加编辑框控件。利用添加文本框的方法,在“爱好”标签右侧,添加一个编辑框,并在“编辑框生成器”的“值”选项卡中绑定“通讯录”表的“业余爱好”字段。添加文本框和编辑框的表单如图所示。
操作步骤六:添加组合框控件。按下组合框按钮,在“角色”标签右侧添加一个组合框Combo1,并打开“组合框生成器”对话框,如图所示,“组合框生成器”对话框中有“列表项”、“样式”、“布局”和“值”4个选项卡,它们的作用如表
选项卡名称及作用
选项卡名称 |
作用 |
列表项 |
组合框中添加数据的来源,对应RowSource属性。例如,选择“JS.角色”字段(先建立一个只有一个“角色”字段的JS.dbf表,并输入一些记录,记录为同学、校友、朋友、网友、哥哥等) |
样式 |
组合框排列方式设计,可以选择三维或平面,是下拉组合框还是下拉列表框 |
布局 |
调整组合框中数据的列宽 |
值 |
确定组合框的数据来源。例如,选择返回值来源为“角色”,将返回值存储在“通讯录.角色”字段 |
可以将上述所添加的组合框改为列表框,添加列表框操作与组合框的操作方法相同。
操作步骤七:添加选项按钮组控件。按下“表单控件”工具栏中的“生成器锁定”按钮,再按下“选项按钮组”按钮。在表单要放置选项按钮组的位置单击鼠标(例如,在“编号”和“角色”标签之间),这时在表单上添加一个选项按钮组。
在添加选项按钮组的同时,系统启动了“选项组生成器”对话框,如图所示。它包含“按钮”(设置选项组中单选按钮数目及类型)、“布局”(设置排列方式)和“值”(将选项组的值存入某字段中)3个选项卡。
操作步骤八:添加微调控件。按下“表单控件”工具栏中的微调控件按钮,在“身高”标签右侧单击鼠标,在表单添加微调控件Spinner1。然后通过属性窗口设置微调控件属性:
KeyboardHighValue:利用键盘输入数值上限。例如,3
KeyboardLowValue:利用键盘输入数值下限。例如,1
SpinnerHighValue:利用鼠标输入数值上限。例如,3
SpinnerLowValue:利用鼠标输入数值下限。例如,1
Increment:微调控件向上(或向下)箭头按钮递增(或递减)的幅度。例如,0.01
Value:初始状态的值。例如,1.50
ControlSource:与微调控件建立联系的数据源。例如,通讯录.身高
单击工具栏中的运行按钮,以文件名“通讯录4”保存该表单,并运行该表单,结果如图所示。
运行表单时,可以在表单上随时修改记录的字段值,修改后的结果回存 到数据表中,浏览该表中记录可以观察到修改的结果。
通过运行表单可以观察到,表单中只显示第1条记录,要显示其他记录,还必须添加一组命令按钮。
操作步骤九:添加命令按钮组控件。按下“表单控件”工具栏中的“生成器锁定”按钮和命令按钮组,将指针移到表单的合适位置,单击左键,在表单上添加了一个命令按钮组Commandgroup1,默认包括Command1和Command2两个命令按钮,同时启动了“命令组生成器”对话框。
在“命令组生成器”对话框的“按钮”选项卡中,设置按钮数目为3,标题分别为“上一记录”,“下一记录”和“退出”,如图所示。在“布局”选项卡中设置按钮布局为“水平”。
操作步骤十:设置每个命令按钮的属性。单击命令按钮组控件,在“属性”窗口的对象列表框中选定Commandgroup1中的Command1,再双击“上一记录”命令按钮,在打开的Command1.Click文本编辑窗口中输入该命令按钮所对应的程序代码,如图所示。
用同样的方法可设置输入“下一记录”和“退出”按钮的程序代码。
操作步骤十一:保存并运行表单,验证添加的控件所完成的功能。