第7章 表单设计与应用练习一 创建和管理表单和标签控件
【实验目的】
用表单向导创建表单用表单设计器创建表单利用数据环境添加数据表运行表单
【知识要点】
一、创建表单
1、创建表单的三种方法
(1)使用表单向导创建简易的数据表单
(2)使用表单设计器创建或修改任何形式的表单
(3)使用表单生成器产生快速表单
2、调出表单设计器方法一、在项目管理器环境下调用
(1)在“项目管理器”窗口中选择“文档”选项卡,然后选择其中的“表单”图标;
(2)单击“新建”按钮,系统弹出“新建表单”对话框;
(3)单击“新建表单”图标按钮。
方法二、菜单方式调用
(1)单击“文件”菜单中的“新建”命令,打开“新建”对话框;
(2)选择“表单”文件类型,然后单击“新建文件”按钮。
方法三、令方式调用在命令窗口输入:CREATE FORM <表单文件名>。
不管采用上面哪种方法,系统都将打开“表单设计器”窗口,。在表单设计器环境下,用户可以交互式、可视化地设计完全个性化的表单二、修改表单
对于一个已创建的表单,可以使用表单设计器进行编辑修改。
1、打开表单设计器
(1)如果要修改项目中的表单,在项目编辑状态下打开要修改的表单文件,进入表单设计器环境进行修改即可。
(2)如果要修改的表单不属于某个项目,可以单击“文件”菜单中的“打开”命令,然后在“打开”对话框中选择需要修改的表单文件,进入表单设计器环境进行修改即可。
(3)在命令窗口输入命令:MODIFY FORM <表单文件名>,进入表单设计器环境进行修改即可。
2、表单生成器在表单设计器环境下,也可以调用表单生成器,以方便、快速地产生表单。调用表单生成器有3种方法:
(1)可以通过选择“表单”菜单中的“快速表单”命令;
(2)单击“表单设计器”工具栏中的“表单生成器”按钮;
(3)右击表单窗口,然后在弹出的快捷菜单中选择“生成器”命令。
3、数据环境为数据库应用系统创建的表单都拥有自己的数据环境,数据环境和表单保存在一起。将数据表添加到表单的数据环境中,再运行该表单时,Visual FoxPro将自动打开数据环境中的表或视图,并在关闭该表单时自动关闭它们。
可以利用“数据环境设计器”设置和修改表单的数据环境。打开“数据环境设计器”的方法有3种。
(1)在表单设计器环境下,单击表单设计器工具栏上的“数据环境”按钮,即可打开“数据环境设计器”窗口。
(2)选择“显示”菜单中的“数据环境”命令,也可打开“数据环境设计器”窗口。
(3)在表单中右击,从快捷菜单中选择“数据环境”命令,进入“数据环境设计器”窗口。
三、保存和运行表单
1、保存表单
(1),文件/保存”:保存当前表单
(2)Ctrl+W:保存当前表单
(3)“关闭”钮、“文件/退出”:在系统问是否保存时,选“是”
2、运行表单文件。
(1)在“项目管理器”窗口中,选择要运行的表单,然后单击,运行”按钮。
(2)在表单设计器环境下,选择“表单”菜单中的“执行表单”命令,或单击标准工具栏上的“运行”按钮。
(3)选择“程序”菜单中的“运行”命令,打开“运行”对话框,然后在对话框中指定要运行的表单文件并单击“运行”按钮。
(4)在命令窗口输入命令:
DO FORM <表单文件名>
【实验内容】
1.根据学生表,利用表向导创建一个表单(学生情况.scx)。结果可以对该学生表的内容进行显示和查找。结果如下图。
2.根据学生表和成绩表,利用表向导创建一个一对多的表单(学生情况1.scx)。结果可以同时对两个表的记录进行显示。结果如下图。
3.根据成绩表,创建一个快捷表单(学生成绩.scx)。结果如下图。
4.根据学生表,利用表设计器和数据环境设计器,创建一个新的表单(学生情况2.scx),要求在数据环境中将整个表格移入表单中,显示出学生的所有属性。结果如下图。
5.根据学生表,利用表设计器和数据环境设计器,创建一个新的表单(学生情况3.scx),要求在表单中只显示出学生表中的学号,姓名,性别,入学成绩这四个属性。
6,为表单“学生情况2.scx”添加一个标签控件“学生情况一览表”。 修改标签控件的属性(大小、字号、颜色等)。
【高手进阶】
1.新建一个表单(sj.scx),表单的Caption属性设置为“标签的应用”。再为该表单添加一个标签控件,标签控件的Caption属性为“退出”。要求运行表单时,用鼠标单击该标签,则该表单被释放。
【自我测试】( 5分钟 )
1.根据“书库.dbf”表,利用向导新建一个表单,要求可显示书库中的书号,书名和作者。并且格式为“浮雕式”和“图片按钮”,按书号降序排序,并能浏览,查找书库中的内容。如下图。
【实验过程】
1.根据学生表,利用表向导创建一个表单(学生情况.scx)。结果可以对该学生表的内容进行显示和查找。结果如下图。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“向导”按钮,打开“向导选取”对话框。
(2)选择使用的向导。在“向导选取”对话框中有两种选择,其中“表单向导”用于由单个表创建表单。本题选择“表单向导”,然后单击“确定”按钮进入表单向导。
(3)字段选择。在,步骤1-字段选取”中,可以选择在表单上显示哪些字段。该题选择,学生表”的全部字段,然后单击“下一步”按钮。
(4)选择表单样式。在,步骤2-选择表单样式”中,可以选择表单样式和表单中按钮的类型。该题选择“标准式”样式和“文本按钮”按钮类型,然后单击“下一步”按钮。
(5)确定排序次序。在,步骤3-排序次序”中,用于选择在表单中是否按顺序显示记录。方法是从“可用的字段或索引标识”中选择字段——学号,单击“添加”按钮,将它添加到“选定字段框”中,然后单击“下一步”按钮。
(6)完成。在表单向导的“步骤4-完成”中,在“请输入表单标题”框中输入“输入和修改学籍记录”,然后单击“预览”按钮,预览表单的运行结果。如果对结果不满意,可以单击“上一步”按钮,退回上面的步骤进行修改。如果结果满意,就可以选择一种保存方式,该题选择“保存并运行表单”单选按钮,然后单击“完成”按钮,在随后出现的“另存为”对话框中保存该表单,命名为“学生情况.scx”,接着开始运行表单,表单运行结果上图所示。
2.根据学生表和成绩表,利用表向导创建一个一对多的表单(学生情况1.scx)。结果可以同时对两个表的记录进行显示。结果如下图。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“向导”按钮,打开“向导选取”对话框。
(2)选择使用的向导。在“向导选取”对话框中有两种选择,其中“表单向导”用于由单个表创建表单。本题选择“一对多表单向导”,然后单击“确定”按钮进入表单向导。
(3)字段选择。在,步骤1-从父表中选定字段”中,可以选择在表单上显示哪些字段。该题选择,学生表”的全部字段,然后单击“下一步”按钮。
(4)字段选择。在,步骤2-从子表中选定字段”中,可以选择在表单上显示哪些字段。该题选择,成绩表”的全部字段,然后单击“下一步”按钮。
(5)在“步骤3-建立表之间的关系”中,选取“学生表”中的“学号”字段和“成绩表”中的“学号”字段建立关联。
(6)选择表单样式。在,步骤4-选择表单样式”中,可以选择表单样式和表单中按钮的类型。该题选择“标准式”样式和“文本按钮”按钮类型,然后单击“下一步”按钮。
(7)确定排序次序。在,步骤5-排序次序”中,用于选择在表单中是否按顺序显示记录。方法是从“可用的字段或索引标识”中选择字段——学号,单击“添加”按钮,将它添加到“选定字段框”中,然后单击“下一步”按钮。
(8)完成。在表单向导的“步骤6-完成”中,在“请输入表单标题”框中输入“输入和修改学籍记录”,然后单击“预览”按钮,预览表单的运行结果。如果对结果不满意,可以单击“上一步”按钮,退回上面的步骤进行修改。如果结果满意,就可以选择一种保存方式,该题选择“保存并运行表单”单选按钮,然后单击“完成”按钮,在随后出现的“另存为”对话框中保存该表单,命名为“学生情况1.scx”,接着开始运行表单,表单运行结果上图所示。
3.根据成绩表,创建一个快捷表单(学生成绩.scx)。结果如下图。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“新建文件”按钮,打开表单设计器。
(2)使用“表单”菜单的“快速表单”命令,打开“表单生成器”对话框。在“字段选取”选项卡中选择“成绩表”的所有字段为选定字段。在“样式”选项卡中选择“标准式”。点击“确定”按钮。
(3)选择“表单”菜单的“执行表单”。弹出“保存”对话框。为表单命名为“学生成绩.scx”。保存并运行表单。如上图。
4.根据学生表,利用表设计器和数据环境设计器,创建一个新的表单(学生情况2.scx),要求在数据环境中将整个表格移入表单中,显示出学生的所有属性。结果如下图。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“新建文件”按钮,打开表单设计器。
(2)右击表单,选择“数据环境”。弹出“数据环境设计”窗口。右击选择“添加”,将“学生表添加至数据环境中。
(3)用鼠标左键按住“学生表”蓝色的标题处,将该表整个拖入表单设计器中,则表单中添加了一个表格控件。如上图。
(4)选择“表单”菜单的“执行表单”。弹出“保存”对话框。为表单命名为“学生情况2.scx”。保存并运行表单。
5.根据学生表,利用表设计器和数据环境设计器,创建一个新的表单(学生情况3.scx),要求在表单中只显示出学生表中的学号,姓名,性别,入学成绩这四个属性。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“新建文件”按钮,打开表单设计器。
(2)右击表单,选择“数据环境”。弹出“数据环境设计”窗口。右击选择“添加”,将“学生表添加至数据环境中。
(3)用鼠标左键选取学生表中的“学号”字段,拖入表单设计器中,依次将“学号”“姓名”“性别”“入学成绩”四个字段拖入表单中,如上图。
(4)选择“表单”菜单的“执行表单”。弹出“保存”对话框。为表单命名为“学生情况3.scx”。保存并运行表单。
6,为表单“学生情况2.scx”添加一个标签控件“学生情况一览表”。 修改标签控件的属性(大小、字号、颜色等)。
[解答]
(1)使用“文件”菜单的“打开”命令,打开表单“学生情况2.scx”
(2)在控件工具栏中选择标签控件。按住鼠标左键在表单上拖动,就添加了一个标签件。
(3)单击“标签”控件,选定“属性”窗口的“Caption” (标题),在“属性设置栏”中输入“学生情况一览表”;设定“FontName”属性为“隶书”,设定,FontSize” 属性为26,设定“ForeColor”为红色。
(4)选择“表单”菜单的“执行表单”。弹出“保存”对话框。为表单命名为“学生情况4.scx”。保存并运行表单。
【高手进阶解答】
1.新建一个表单(sj.scx),表单的Caption属性设置为“标签的应用”。再为该表单添加一个标签控件,标签控件的Caption属性为“退出”。要求运行表单时,用鼠标单击该标签,则该表单被释放。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“新建文件”按钮,打开表单设计器。
(2)在控件工具栏中,选中标签控件,在表单的合适位置绘制出一个标签控件。
(3)设置标签的Caption属性为“退出”。Fontsize属性为24。
(4)代码的编写。双击标签控件,弹出代码编写窗口。在标签控件的Click事件中编写如下代码:
Thisform.release
(5)选择“表单”菜单的“执行表单”。弹出“保存”对话框。保存并运行表单。
【自我测试解答】
1.根据“书库.dbf”表,利用向导新建一个表单,要求可显示书库中的书号,书名和作者。并且格式为“浮雕式”和“图片按钮”,按书号降序排序,并能浏览,查找书库中的内容。如下图。
[解答]
(1)使用“文件”菜单的“新建”命令,打开“新建”对话框,在对话框中选择想要建立的文件类型“表单”,然后单击“向导”按钮,打开“向导选取”对话框。
(2)选择使用的向导。在“向导选取”对话框中有两种选择,其中“表单向导”用于由单个表创建表单。本题选择“表单向导”,然后单击“确定”按钮进入表单向导。
(3)字段选择。在,步骤1-字段选取”中,可以选择在表单上显示哪些字段。该题选择,书库”表的“书号”“书名”“作者”字段,然后单击“下一步”按钮。
(4)选择表单样式。在,步骤2-选择表单样式”中,可以选择表单样式和表单中按钮的类型。该题选择“浮雕式”样式和“图片按钮”按钮类型,然后单击“下一步”按钮。
(5)确定排序次序。在,步骤3-排序次序”中,用于选择在表单中是否按顺序显示记录。方法是从“可用的字段或索引标识”中选择字段——书号,单击“添加”按钮,将它添加到“选定字段框”中,再选择降序单选按钮,然后单击“下一步”按钮。
(6)完成。在表单向导的“步骤4-完成”中,在“请输入表单标题”框中输入“书库”,然后单击“预览”按钮,预览表单的运行结果。如果对结果不满意,可以单击“上一步”按钮,退回上面的步骤进行修改。如果结果满意,就可以选择一种保存方式,该题选择“保存并运行表单”单选按钮,然后单击“完成”按钮,在随后出现的“另存为”对话框中保存该表单,命名为“书库.scx”,接着开始运行表单,表单运行结果上图所示。
练习二 常用控件:命令按钮、命令按钮组、文本框
【实验目的】
理解面向对象程序基本概念;
熟练掌握表单的基本操作;
熟练掌握命令扫钮、命令按钮组和文本框的使用;
【知识要点】
一、表单常用控件及其常用属性
1.命令按钮:命令按钮用来启动某个事件代码,完成特定功能。如关闭表单、移动记录指针、打印报表等。
常用属性有:
(1)Caption属性:用于设置按钮的标题。在设置命令按钮对象的“Caption”属性时,输入“\<”和一个快捷键字符可指定其快捷键。在表单上同时按Alt键和快捷字符,可以完成单击此按钮的功能。
(2)Enabled属性:指定表单或控件能否响应由用户引发的事件。默认值为.T.,即对象是有效的,能被选择,能响应用户引发的事件。
(3)Visible属性:指定对象是可见还是隐藏。在表单设计器中,默认值为.T.,即对象是可见的。在程序代码中,默认值为.F.,即对象是隐藏的。但一个对象即使是隐藏的,在代码中仍可以访问它。该属性在设计和运行时可用,适用于绝大多数控件。
(4)Piction属性:定义图形化按钮的面版图型。
2.命令按钮组:命令按钮组是包含一组命令按钮的容器控件,用户可以单个或作为一组来操作其中的按钮。
常用属性有:
(1)ButtonCount属性:指定命令组中命令按钮的数目。可以通过改变ButtonCount属性的值来重新设置命令组中包含的命令按钮数目。设置命令按钮组的最简便方法是使用命令组生成器。
(2)Buttons属性:用于存取命令组中各按钮的数组。该属性数组在创建命令组时建立,用户可以利用该数组为命令组中的命令按钮设置属性或调用其方法。属性数组下标的取值范围应该在l~ButtonCount属性值之间。
(3)Value属性:指定命令组当前的状态。该属性的类型可以是数值型的(这是默认的情况),也可以是字符型的。如果命令组内的某个按钮有自己的Click事件代码,那么一旦单击该按钮,就会优先执行为它单独设置的代码,而不会执行命令组的Click事件代码。
3.文本框:文本框也是最常用的控件,使用文本框能够进行多种类型数据的输入和输出。
文本框的主要应用是对表中非备注字段中的数据进行显示和编辑。
常用属性有:
(1)ControlSource属性:利用该属性为文本框指定一个字段或内存变量。运行时,文本框首先显示该变量的内容。而用户对文本框的编辑结果,也会最终保存到该变量中。
(2)Value属性:返回文本框的当前内容。对文本框Value属性的设置决定了运行表单时,在文本框中显示的数据的值和类型。文本框中的数据可以是数值、字符、日期或逻辑型的。
(3)PasswordChar属性:利用该属性可在文本框中接收用户密码,可以把它设置为“*”或其他的一般字符。这样在运行表单时,文本框的Value和Text属性可以接收用户真正输入的信息,而在屏幕上显示的却是PasswordChar所指定的字符。这在设计登录口令框时经常用到。
(4)Readonly属性:该属性为.T.时,文本框显示为灰色,表明不可编辑其中的数据。
(5)InPutMask属性:指定在一个文本框中如何输入和显示数据。
(6)Valid事件:若要检查用户输入文本框的值,可以编写Valid事件代码,利用代码来检查数据。
二、控件常用过程(事件)
1.Init(初始化) 当对象运行时,被激活(触发事件)
2.Click(单击) 单击对象(一般是“命令钮”),被激活
3.DblClick(双击) 双击对象(一般是“命令钮”),被激活
4.Load(加载) 当运行表单时(先引发Load,再引发Init ),被激活
5.Destroy(释放) 当对象被释放时,被激活
6.UnLoad(卸载) 当退出表单时,被激活
7.Change(改变) 对象(一般是“文本框”)内容改变,被激活
8.GotFocus/LostFocus(获得/失去焦点) 光标移到/移出对象时,被激活
9.Valid(有效的) 当控件失去焦点时,可触发事件
【实验内容】
1.创建一个表示今天日期的表单: 单击“今天日期”钮,就会显示今天的年月日练习如何将程序在命令钮的“Click”中输入
2.用Xsda表创建一个表单,要求能通过输入姓名(或学号)进行查找并显示该生的情况练习使用“数据环境设计器”和命令钮输入代码。见表单“学生信息查询”
3.用“表单设计器”,为Xsda表创建一个“学生管理”表单,并加入标签和命令钮。
添加,
一个标签:学生档案管理系统(设置属性:标题、字体、字号、颜色等)
七个命令钮:第一个、上一个、下一个、最后一个、退出、添加、删除(设置标题、添加代码)
4.为Xsda表创建一个“学生档案管理”表单,并用文本框来编辑字段内容。
在表单中添加如下控件:
四个标签:学生档案管理、学号、姓名、出生年月三个文本框:对应学号、姓名、出生年月三个字段用命令按钮组添加五个命令钮:第一个、上一个、下一个、最后一个、退出
5.用“表单设计器”设计一个计算圆面积的表单;(输入半径,按“计算”钮,就算出并显示面积)
[练习如何使用“文本框”输入、输出数据]

【高手进阶】
1.做一个能进行加法运算的表单
[练习使用命令钮,及文本框输入、输出数据的操作]
2.用“表单设计器”设计一个输入口令的表单(口令“5845201314”正确,显示"欢迎光临!",否则显示“无权使用!”)
[目的:练习如何使用“文本框”输入和用“标签”输出数据及运行新表单]
【自我测试】( 5分钟 )
1.用“表单设计器”为书库表创建一个表单“书库管理”,并添加“第一个”、“上一个”、“下一个”、“最后一个”、“退出”等命令按钮组。并且能够通过书名查出该书的信息。
【实验过程】
1.创建一个表示今天日期的表单: 单击“今天日期”钮,就会显示今天的年月日
[解答]练习如何将程序在命令钮的“Click”中输入
(1)进入“表单设计器”,建两个命令按钮:“今天日期”和“退出”
  (2)双击“今天日期”钮,在“Click(单击)”事件中输入
YMD=DTOS(DATE()) && 函数DTOS把日期转为(YYYYMMDD)字符
YY=SUBSTR(YMD,1,4)   && 函数SUBSTR截取字符(从第1位取4个)
MM=SUBSTR(YMD,4,2)
DD=SUBSTR(YMD,6,2)
WAIT WINDOWS,今天是:” + YY +,年” + MM +,月” + DD +,日”
&& 暂停运行,(用窗口形式)显示内
ThisForm.Release && 更新表单
(3)双击“退出”钮,在“Click(单击)”事件中输入
  ThisForm.Release
2.用Xsda表创建一个表单,要求能通过输入姓名(或学号)进行查找并显示该生的情况
[解答]练习使用“数据环境设计器”和命令钮输入代码。见表单“学生信息查询”
(1)进入“表单设计器”:
(2)将表Xsda添加到“数据环境设计器”中,将表中字段逐个拖入到“表单设计器”中,并调整大小和位置;
(3)单击“控件工具栏”上的“标签”钮后,在表单上方拖出标签框,在“属性”框的“Caption”栏中输入“学生情况一览表”(并在“FontName”、“FontSize”、“ForeColor”栏中确定字体、字号、颜色等);
(4)建两个标签和一个文本框:“请输入要查找学生的姓名”、“姓名”及准备录入姓名的文本框
(5)建两个命令按钮:“查找”和“退出”;
① 右击“查找”命令按钮,选“代码”项,在“Click(单击)”事件中输入:
LOCATE FOR 姓名=ALLTRIM(ThisForm.Text1.Value)
&& 移指针到输入的姓名的第一条记录
IF EOF() && 条件是已到文件尾,即是没找到记录
MESSAGEBOX("查无此人!",48,"提示信息")
&& 出现一个对话框,48的含义见P188
ENDIF
ThisForm.Refresh
② 右击“退出”命令按钮,选“代码”项,在“Click(单击)”事件中输入:
ThisForm.Release
(6)保存名为“学生信息查询”。
3.用“表单设计器”,为Xsda表创建一个“学生管理”表单,并加入标签和命令钮。
添加,
一个标签:学生档案管理系统(设置属性:标题、字体、字号、颜色等)
七个命令钮:第一个、上一个、下一个、最后一个、退出、添加、删除(设置标题、添加代码)
[解答]见表单“学生管理”
(1) 创建数据环境:“显示/数据环境”-在“添加表或视图“对话框中选定表Xsda,将其添加到“数据环境设计器”中
(2) 向表单中添加对象:
显示表内容:将“数据环境设计器”中表的所需字段(如学号、姓名、性别、民族、出生年月、籍贯、自费否、入学总分等)拖入表单中适当位置添加标签:单击“表单控件”工具栏的“标签”钮,在表单上方拖出标签框(Label1)
添加命令按钮:单击“表单控件”工具栏的“命令”钮,在表单中适当位置,拖出一个命令按钮;其余六个按钮,照此法添加。注意它们的位置、顺序,不要弄乱了。不然写代码时,容易弄错按钮。
(3) 为对象设置属性:通过“属性”窗口,可为对象设置属性。如:
单击“标签”框,选定“属性”窗口的“Caption(标题)”,在“属性设置栏”中输入“学生管理”;、选定“FontName(字体名)”,选择一种字体,如楷体、选定“ForeColor(字体颜色)”,选择一种颜色,如红色;
 同样,七个命令按钮,布置好后位置后,设定标题名称为“第一个”、“上一个”、“下一个”、“最后一个”、“退出”、“添加”、“删除”。同样可设定字体、字号、颜色。。。。。
(4) 编辑事件或方法代码:双击命令按钮,在“过程”栏中选择“Click(单击)”事件,并输入代码:
在(第一个)命令按钮的“Click(单击)”事件中输入
  GO TOP (移指针到第一条记录)
ThisForm.Refresh   (更新表单)
在(上一个)命令按钮的“Click(单击)”事件中输入
  Skip -1 (移指针到上一条记录)
IF BOF()   (若指针已到文件头)
    GO TOP  (移指针到首记录)
ENDIF
ThisForm.Refresh  (更新表单)
在(下一个)命令按钮的“Click(单击)”事件中输入
  Skip 1 (移指针到下一条记录)
  IF EOF() (若指针已到文件尾)
   GO BOTTOM    (移指针到末记录)
ENDIF
ThisForm.Refresh (更新表单)
在(最后一个)命令按钮的“Click(单击)”事件中输入
  GO BOTTOM     (移指针到最后一条记录)
ThisForm.Refresh (更新表单)
在(退出)命令按钮的“Click(单击)”事件中输入
  ThisForm.Release (从内存中释放该表单)
在(添加)命令按钮的“Click(单击)”事件中输入
  APPEND BLANK (添加一条空白记录)  
ThisForm.Refresh (更新表单)
在(删除)命令按钮的“Click(单击)”事件中输入
DELETE
*PACK (不要急于真的删除了)
ThisForm.Refresh (更新表单)
(5) 保存退出:按“保存”钮,取名为“学生档案”后,“确定”退出。
4.为Xsda表创建一个“学生档案管理”表单,并用文本框来编辑字段内容。
在表单中添加如下控件:
四个标签:学生档案管理、学号、姓名、出生年月三个文本框:对应学号、姓名、出生年月三个字段用命令按钮组添加五个命令钮:第一个、上一个、下一个、最后一个、退出
[解答]见表单“学生档案管理”
(1)为四个标签设置属性:标题、字体、字号、颜色等,与上一题操作一样。
(2)为文本框设置学号、姓名、出生年月等的数据来源:
右击“文本框”-选“生成器”,在“值”标签中,从字段名列表框中选择表中字段;
或从属性窗口的“ControlSource”属性中设置数据来源(表中的字段)
注:1。文本框生成器上有三个标签:[P270]
① 格式:作用是设置当前文本框中的数据类型。只能是字符、数值、日期、逻辑型四种。
② 样式:用来设置文本框的款式。如平面或三维、边框有无线条等。
③ 值:是最重要的选项。其任务是设置数据控制源,即设置文本框的数据来源或数据的存储位置。一般是从从字段名列表框中选择表中字段,或从属性窗口的“ControlSource”属性中设置数据来源(表中的字段)。
2.一般情况下对于表中的字段,最好是使用“数据环境”来拖出
(3)用,命令按钮组”添加命令按钮:
单击“表单控件”工具栏的“命令按钮组”钮,在表单中拖出命令按钮组,右击命令按钮组框,选“生成器”,在“按钮”标签中设置按钮数目,比如为“5”;在“布局”标签中设置按钮排列方式,比如为“水平”。
设置按钮的“Caption(标题)”、“FontName(字体名)”、“ForeColor(字体颜色)”等属性。注意:要先右击按钮框,选“编辑”,然后再右击各按钮,进行设置。
为各按钮编辑事件或方法代码。方法和内容同上一练习题。
5.用“表单设计器”设计一个计算圆面积的表单;(输入半径,按“计算”钮,就算出并显示面积)
[解答]见表单“圆面积”[练习如何使用“文本框”输入、输出数据]
(1)向表单中添加对象:利用“表单控件”工具栏添加三个标签(Label):单击工具栏的“标签”钮,在表单中拖出三个标签框添加二个文本框(Text):单击工具栏的“文本框”钮,在表单中拖出二个文本框添加二个命令按钮(Command):单击工具栏的“命令”钮,在表单中拖出二个命令按钮

(2)为对象设置属性:通过“属性”窗口,可为对象设置属性。如:
 分别设置“标签”框1(Label1)、2(Label2)、3(Label3)的标题为“计算圆面积”、“请输入圆的半径”和“圆的面积为”,并自行设定字体、字号、颜色;
分别设置“命令”按钮1(Command1)、按钮2(Command2)的标题为“计算”和“退出”。也可设置字体、字号、颜色。

(3)编辑事件或方法代码:
① 双击命令按钮1(Command1),在“过程”栏中选择“Click(单击)”事件,并输入代码:
R = VAL(ThisForm.Text1.Value) && 文本框1(Text1)中输入的值赋给变量R
注:1.在程序中访问Value,则可利用文本框中的值;
2.ThisForm.Text1.Value表示当前表单文本框1的值;
3.VAL是字符转变为数值的函数。若设置“InputMask”属性为数值,则可不用VAL函数。
ThisForm.Text2.Value = 3.14*R*R && 把计算结果赋给Text2
ThisForm.Text1.SetFocus
&& 将焦点移到文本框1,即计算后,光标回到文本框1,等待第二次操作。
ThisForm.Refresh && 更新表单
② 双击命令按钮2(Command2),在“过程”栏中选择“Click(单击)”事件,并输入代码:
ThisForm.Release && 释放表单
(4) 保存退出:按“保存”钮,取名为“圆面积”后,“确定”退出。
【高手进阶解答】
1.做一个能进行加法运算的表单
[解答]见表单“加法器计算器”[练习使用命令钮,及文本框输入、输出数据的操作]
(1)进入“表单设计器”,添加四个标签(Label)、两个文本框(Text)、两个命令按钮(Command),并设定标题、字体、字号、颜色等。
(2)对前两个文本框(Text1、Text2)的InputMask属性设为“9999999.99”。(即限定只能输入7位数字,也可不设置,则可输入任意多的数)
(3)双击命令按钮1(Command1),在“过程”栏中选择“Click(单击)”事件,并输入代码:
ThisForm.Text3.Value=VAL(ThisForm.Text1.Value)+ VAL(ThisForm.Text2.Value)
函数VAL()是将字符型转为数值型,此句表示将文本框1、2的值相加后赋给文本框3
ThisForm.Refresh
双击命令按钮2(Command2),在“过程”栏中选择“Click(单击)”事件,并输入代码:
ThisForm.Release
2.用“表单设计器”设计一个输入口令的表单(口令“1314520”正确,显示"欢迎光临!",并运行表单“学生管理”,否则显示“无权使用!”)
练习如何使用“文本框”输入和用“标签”输出数据及运行新表单
(1) 向表单中添加对象:
添加二个标签(Label):单击“表单控件”工具栏的“标签”钮,在表单中拖出二个标签框添加一个文本框(Text):单击“表单控件”工具栏的“文本框”钮,在表单中拖出一个文本框,
 
(2) 为对象设置属性:通过“属性”窗口,为对象设置属性,如:设定标题、字体、字号、颜色等。
 将“标签”2(Label2)属性:“Caption(标题)”,设为“无”(使其在屏幕上不显示);
将“文本框”(Text1)属性:“PasswordChar(密码)”,设为,*”
(3) 编辑事件或方法代码:
对“文本框”(Text1)的“Valid(有效的)”事件中输入代码:
MM = ThisForm.Text1.Value    && 将文本框中输入的值给变量MM
IF MM="1314520" && 分支条件(即口令值为:1314520)
ThisForm.Label2.Caption="欢迎光临!" && 满足条件,则在标签2中显示"欢迎光临!"
DO FROM 学生管理 && 运行表单“学生管理”
ELSE
ThisForm.Label2.Caption="不欢迎你!"
ENDIF
ThisForm.Refresh
【自我测试解答】
1.用“表单设计器”为书库表创建一个表单“书库管理”,并添加“第一个”、“上一个”、“下一个”、“最后一个”、“退出”等命令按钮组。并且能够通过书名查出该书的信息。
[解答]
(1)新建一个表单,打开表单设计器
(2)在表单设计器中,右键单击表单,选择“数据环境”。再右击数据环境,选“添加”,将书库表添加至数据环境中。
(3)将数据环境中表的字段拖入表单设计器中,按如图排列。
(4)添加一个按钮组控件。右击按钮组控件,选生成器。将按钮个数设为5个。设置5个按钮的Caption属性分别为“第一个”“下一个”“上一个”“最后一个”和“退出”。
(5)再添加一个标签控件,设置其Caption属性为“请输入要查找的书名”
(6)最后添加一个命令按钮,设置其Caption属性为“查找”
(7)编写代码。
在“第一个”按钮的Click事件中输入:
Go top
Thisform.refresh
在“第二个”按钮的Click事件中输入:
If not eof()
skip 1
Endif
Thisform.refresh
在“下一个”按钮的Click事件中输入:
If not bof()
skip -1
Endif
Thisform.refresh
在“最后一个”按钮的Click事件中输入:
Go bottom
Thisform.refresh
在“退出”按钮的Click事件中输入:
Thisform.release
在“查找”按钮的Click事件中输入:
Locate for 书名=alltrim(thisform.text1.value)
Thisform.refresh
(8)保存并运行表单
练习三 常用控件:编辑框、复选框、选项组、计时器、图像
【实验目的】
掌握几种控件的特点及其属性熟练应用几种控件的事件并对能对其进行代码的编写
【知识要点】
一、几种常用控件及其常用属性
1.编辑框:编辑框实际上是一个完整的字处理器,利用它能够选择、剪切、粘贴及复制正文;可以实现自动换行,能够有自己的垂直滚动条,可以用箭头键在正文里面移动光标。编辑框只能输入、编辑字符型数据,包括字符型内存变量、数组元素和字段里的内容。
常用属性有:
(1)ControlSource属性:用于指定编辑框的数据来源,在编辑框中的输入或修改的结果将存放在指定的数据源。
(2)Readonly属性:设置用户能否修改编辑框的文本。值为.T.时,不能编辑编辑框中的内容;值为.F.时,允许编辑编辑框的内容,系统默认值为.F,。
(3)ScrollBars属性:指定编辑框是否具有滚动条。当属性值为0时,编辑框没有滚动条;当属性值为2(默认值)时,编辑框包含垂直滚动条。
(4)Value属性:返回文本框的当前内容。对文本框Value属性的设置决定了运行表单时,在文本框中显示的数据的值和类型。文本框中的数据可以是数值、字符、日期或逻辑型的。
2.复选框:此控件用于创建一个复选框,每个复选框都有两个状态,如.T.或.F.。当处于.T.状态时,即选中此复选框,则在复选框前面的方框中显示一个“√”;否则,复选框内为空白。
常用属性有:
(1)Caption属性:用来指定显示在复选框旁边的文字。
(2)Value属性:用来指明复选框的当前状态,Value属性的设置有3种情况。
① 0或.F.,复选框呈清除(也称为未选中)状态。
② l或.T.,复选框呈选中状态。③ 2或.Null.,复选框呈灰色状态。当复选框获得焦点时,只要用户按<Ctrl>+<0>,就在复选框中输入.NULL.,使复选框显示灰色。
(3)ControlSource属性:指明与复选框建立联系的数据源。
3.选项框:选项组又称为选项按钮组,是包含选项按钮的一种容器。一个选项组中往往包含若干个选项按钮,但用户只能从中选择一个按钮,当用户选择某个选项按钮时,该按钮即成为被选中状态,而选项组中的其他选项按钮,不管原来是什么状态,都变为未选中状态。被选中的选项按钮中会显示一个圆点。
常用属性有:
(1)ButtonCount属性:指定选项组中选项按钮的数目。在表单中创建一个选项组时,ButtonCount属性的默认值是2。可以通过改变ButtonCount属性的值来重新设置选项组中包含的选项按钮数目。
(2)Value属性:用于指定选项组中哪个选项按钮被选中。该属性值的类型可以是数值型的,也可以是字符型的。
(3)ControlSource属性:指明与选项组建立联系的数据源。作为选项组数据源的字段变量或内存变量,其类型可以是数值型或字符型。比如,变量值为数值型2,则选项组中第2个按钮被选中;若变量值为字符型“Option2”,则Caption属性值为“Option2”的按钮被选中。用户对选项组的操作结果会自动存储到数据源变量及Value属性中。
4.计时器:计时器控件可以进行计时,可以按某个时间间隔周期性地执行指定的操作。
常用属性有:
(1)Timer事件:即计时器事件,是在时间间隔到时触发的事件。应该编写该事件的代码,指定完成某个操作。
(2)Interval属性:用于指定一个时间间隔,即一个计时器事件和下一个计时器事件之间的毫秒数。如果计时器有效,将以近似相等的时间间隔触发计时器事件。
(3)Enabled属性:若将该属性设置为.T.,计时器就能在表单开始运行时启动计时工作。如果设置Enabled属性为.F.,就会挂起计时器的运行;这种情况下,可以使用表单上别的控件的某个事件(如命令按钮的Click事件)启动计时器的工作。
5.线条、形状:形状和线条用于在表单上添加线条、方框、圆或椭圆形状。
常用属性有:
(1)BackColor属性:确定对象的边框颜色。
(2)BorderStyle属性:确定对象的边框样式。
(3)BorderWidth属性:确定对象的边框宽度。
(4)Fillstyle属性:确定形状对象的填充样式。
(5)FillColor属性:确定形状对象的填充颜色。
(6)Curvature:确定形状对象的4个角的变曲程度,属性值范围是0(直角)到99(圆)。
(7)LineSlant:该属性的有效值为斜杠(/)和反斜杠(\),用于决定当线条既不水平又不垂直时线条倾斜的方向。
(8)SpeciaEffect属性:确定形状是平面的还是三维的,当Curvature属性设置为0时才有效。
6.图像控件:用于在表单上显示图像,在表单中添加该控件,作为标志或起装饰作用的图片(.bmp文件)。常用属性如下。
(1)Picture属性:提供在控件上要显示的图片(.bmp或.ico文件)。
(2)BorderStyle属性:决定图像是否具有可见的边框。
(3)Backstyle属性:决定图像的背景是否透明。
(4)Stretch属性:如果Stretch设置为0——剪裁,则超出图像控件范围的那一部分图像将不显示;如果Stretch设置为l——等比填充,图像控件将保留图片的原有比例,并在图像控件中显示最大可能显示的图片;如果Stretch设置为2——变比填充,则调整图片正好与图像控件的高度和宽度相匹配。
【实验内容】
1.创建一个表单。当选定字体、字号和颜色时,文本框中的字符就按选定设置显示。
2.创建一个表单,添加一个计时器和一个线条控件。要求每过0.1秒,线条就会逐渐加粗。
3.新建一个表单,在该表单上添加一个文本框控件,几个复选框控件和两个标签控件,如下图。要求,当你选中若干个复选框时,文本框中出现相应的数字。
4.新建一个表单,具有图像控件和命令按钮。要求当点击“填充图片”按钮时,为该图像控件填充一张图片,当点击“等比填充”和“变比填充”两个按钮时,分别以两种方式填充图片。结果如图。
【高手进阶】
1.能否为某一表单(如“学生档案表”)再加一个“欢迎进入”的画面。
【自我测试】( 5分钟 )
1.根据学生表做一个能对各门课程统计平均成绩的表单。如下图。
【实验过程】
1.创建一个表单。当选定字体、字号和颜色时,文本框中的字符就按选定设置显示。
[解答]练习使用“文本框”和“单选”钮
(1)为单选钮组编写事件代码:
在OptionGroup1的Click事件中输入:
DO CASE
CASE THIS.Value=1 && 表示当前单选钮组得到光标后,定位在第1项上
THISFORM.Text1.FontName="宋体"
CASE THIS.Value=2
THISFORM.Text1.FontName="隶书"
CASE THIS.Value=3
THISFORM.Text1.FontName="黑体"
CASE THIS.Value=4
THISFORM.Text1.FontName="楷体_GB2313"
ENDCASE
或:
Do Case
Case ThisForm.OptionGroup1.VALUE = 1 && 表示当前单选钮组第1项得到光标
ThisForm.Text1.FontName="宋体" && 设置字体为“宋体”
Case ThisForm.OptionGroup1.VALUE = 2
ThisForm.Text1.FontName="隶书"
Case ThisForm.OptionGroup1.VALUE = 3
ThisForm.Text1.FontName="黑体"
Case ThisForm.OptionGroup1.VALUE = 4
ThisForm.Text1.FontName="楷体_GB2313"
EndCase
在OptionGroup2和OptionGroup3的Click事件中输入类似代码字号(FontSize):直接输入阿拉伯数字,如9、12、18、22
颜色(ForeColor):要在RGB()括号中输入数值。红色是255,0,0;蓝色是0,0,255;绿色是0,255,0;黑色是0,0,0
2.创建一个表单,添加一个计时器和一个线条控件。要求每过0.1秒,线条就会逐渐加粗。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在表单上添加一个直线控件。该控件的Borderwidth的初值为1。
(3)在表单上添加一个计时器控件。该控件的Interval属性为100。
(4)在计时器的Timer事件中输入如下代码:
IF THISFORM.XX.BORDERWIDTH<100
THISFORM.XX.BORDERWIDTH=THISFORM.XX.BORDERWIDTH+1
ENDIF
(5)保存并运行表单。
3.新建一个表单,在该表单上添加一个文本框控件,几个复选框控件和两个标签控件,如下图。要求,当你选中若干个复选框时,文本框中出现相应的数字。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在该表单添加六个复选框控件。其Caption属性分别为“旅游英语”“外国文化”“外交礼仪”“计算机英语”“实用文写作”“数学模型”。
(3)再添加一个文本框控件和两个标签控件“你一共选修了”“六门课”。
(4)在每个复选框控件的Click事件中输入如下代码:
ThisForm.Text1.Value=Str(Val(ThisForm.Text1.Value)+1)
(5)保存并运行表单。
4.新建一个表单,具有图像控件和命令按钮。要求当点击“填充图片”按钮时,为该图像控件填充一张图片,当点击“等比填充”和“变比填充”两个按钮时,分别以两种方式填充图片。结果如图。
[解答]
(1)新建一个表单,打开表单设计器。
(2)选取图像控件和三个命令按钮控件,分别绘制在如上图的位置。
(3)将三个命令按钮的Caption属性分别设置为“填充图片”“等比填充”和“变比填充”。
(4)编写代码。
在“填充图片”的Click事件中输入如下代码:
ThisForm.Image1.Picture=”D:\PICTURE.JPG”
ThisForm.ReFresh
在“等比填充”的Click事件中输入如下代码:
ThisForm.Image1.Stretch=1
ThisForm.ReFresh
在“变比填充”的Click事件中输入如下代码:
ThisForm.Image1.Stretch=2
Thisform.ReFresh
(5)保存并运行表单
【高手进阶解答】
1.能否为某一表单(如“学生档案表”)再加一个“欢迎进入”的画面
[解答]
(1)新建一个表单,取名“欢迎进入”,在“属性”窗口的“picture”栏中输入图片的路径(D:\软三VFP上机实训三\VF配套材料\表单\)和名称(00A);“Stretch”栏设置图像的放置方式(应选:2-变比填充)。
(2)再建一个“进入”命令按钮,在“Click(单击)”事件中输入:
DO FORM D:\软三VFP上机实训三\VF配套材料\表单\学生管理
&& 运行表单“学生管理”
THISFORM.RELEASE
【自我测试解答】
1.根据学生表做一个能对各门课程统计平均成绩的表单。如下图。
[解答]
(1)新建一个表单,打开表单设计器。
(2)右击表单,选择“数据环境”,打开数据环境设计器。将成绩表添加至数据环境中。
(3)将学号,课程号,成绩字段拖入表单,如图排列。
(4)再添加一个标签控件,一个文本框控件,一个命令按钮控件和一个编辑框控件。如图排列。标签控件的Caption属性设为“请输入课程号”。命令按钮的Caption属性设为“统计”。
(5)为命令按钮的Click事件编写如下代码:
SET TALK OFF
AverageTo X For 课程号=Alltrim(ThisForm.Text1.Value)
ThisForm.Edit1.Value=ThisForm.Text1.Value+"的平均成绩为:"+Str(x,6,2)
(6)保存并运行表单。
练习四 常用控件,微调、页框、列表框、组合框、表格
【实验目的】
掌握几种控件的特点及其属性熟练应用几种控件的事件并对能对其进行代码的编写
【知识要点】
一、几种常用控件及其常用属性
1.微调控件:微调控件常用在给定数值范围及数值间距的情况下,让用户从数值范围内通过上调或下调操作,选择一个值或直接在微调框中输入值。
常用属性有:
(1)KeyboardHighValue属性:指定用户能输入到微调框中的最高值。
(2)KeyboardLowValbe属性:指定用户能输入到微调框中的最低值。
(3)SpinnerHighValue属性:指定当用户单击向上按钮时微调控件显示的最高值。
(4)SpinnerLowValue属性:指定当用户单击向下按钮时微调控件显示的最低值。
(5)Increment属性:用户每次单击向上或向下按钮时增加或减少的值(数值间距)。
(6)Value属性:返回用户输入的值。
(7)UpClick事件:用户单击向上按钮时响应的事件。
(8)DownClick事件:用户单击向下按钮时响应的事件。
2.页框:页框是可以包含多个页面(Page)的容器对象。每个页面也是容器,其中又可包含多个控件。
常用属性有:
(1)Tabs属性:确定页面选项卡是否可见。
(2)TabStyle属性:确定选项卡是否是相同大小且与页框的宽度相同。
(3)TabStretch属性:决定选项卡是单行还是多行显示。
(4)PageCount属性:决定页面中包含的页面数,有效值是0~99。
(5)Caption属性:用于指定页面的标题,即在选项卡上显示的文本。
(6)FontName和FontSize属性:设定页面标题的字体和字号。
3.列表框:列表框提供一组条目(数据项),用户可以从中选择一个或多个条目。一般情况下,列表框显示其中的若干条目,用户可以通过滚动条浏览其他条目。
常用属性有:
(1)RowSource 属性:指定列表框的条目数据源。
(2)RowSourceType属性:指明列表框中条目数据源的类型。
(3)ColumnCount属性:用于确定列表框的列数。若要形成多列列表,应该设置该属性值为列表的列数。
(4)ListCount属性:指明列表框中数据条目的数目。
(5)ControlSource属性:用户可以通过该属性指定一个字段或变量,用以保存用户从列表框中选择的结果。
4.组合框:组合框兼有列表框和文本框的功能。有两种形式的组合框,即下拉组合框和下拉列表框,通过更改组合框的Style属性来选择两者形式之一。
常用属性有:
(1)ControlSource属性:指定用户保存选择或输入值的表字段或变量。
(2)Colunmlines属性:指定在下拉列表框中是否显示分隔线,默认值为.T.,在下拉列表框中显示分隔线;如果为.F.,则不显示分隔线。
(3)RowSourceType属性:指定组合框中数据源类型。
(4)RowSource 属性:指定组合框中数据源的来源。
5.表格:表格控件用在表单上添加表格对象。表格是容器对象,包含多个列,每个表格列也是容器,包含标头和控件。。
常用属性有:
(1)ColumnCount属性:设置表格的列数。如果ColumnCount属性设置为1(默认值),则在运行表单时,表格的列数与RecordSource属性所指定的表中字段数目相同。
(2)AllowAddNew属性:是否允许在RecordSource属性所指定的表中追加新记录。
如果将AllowAddNew属性设置为真,当用户选中了表中最后一条记录,并且按下“↓”键时,就向表中添加新记录。
(3)ControlSource属性:指明在列中要显示的数据,一般是表中的一个字段。
(4)Sparse属性:若将Sparse属性设置为.T.,则运行表单时,列中被选中的单元格的数据才显示为控件,列中的其他单元格的数据仍以文本形式显示。
(5)CurrentControl属性:指定列中哪一个控件是活动的,默认值为“Text1”。
常用的列标头属性如下:
(1)Caption属性:指定标头的标题文本,显示在列顶部。
(2)Alignment属性:指定标题文本在对象中显示对齐方式。
【实验内容】
1.新建一个表单,在该表单上添加几个标签控件,三个微调控件,排列成如下图所示。要求当调节三个微调按钮时,可以改变表单的背景颜色。
2.新建一个表单,在该表单上添加一个列表框控件、一个标签控件和一个文本框控件。排列如下图,要求在列表框中选中一个学生姓名时,在文本框中会出现该学生的家庭住址。
3.用Xsda表创建一个表单,要求能输入新来学生(即插入新记录)和通过输入学号(或姓名)进行查找。
4.新建一个表单,在该表单上添加一个组合框控件和两个标签控件,排列如下图。要求当对组合框中的选项进行选择时,可以通过这种选择将标签控件上的字体改变。
5.依据书库表新建一个表单,具有两个选项卡,分别为“查询”和“统计”。查询要求能够通过不同的条件进行查询。如可以根据书名,书号或者是作者进行查询。统计要求能够将订购所有教材所需的金额统计出来。
【高手进阶】
1.为Xsda表和Xscj表创建一个表单,使选择姓名,可显示该生的学号、课程号、分数等情况。
【综合测试】( 5分钟 )
1.对Rsda表,建一个通过输入“编号”、“姓名”、“性别”或“职务”的查询表单
【实验过程】
1.新建一个表单,在该表单上添加几个标签控件,三个微调控件,排列成如下图所示。要求当调节三个微调按钮时,可以改变表单的背景颜色。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在表单上添加三个标签控件。其Caption属性分别为“R”“G”“B”。
(3)再在上面添加三个微调控件。
(4)在三个微调控件的“Downclick”和“Upclick”事件均填写如下代码:
ThisForm.BackColor=RGB(ThisForm.Spinner2.Value,ThisForm.Spinner3.Value,ThisForm.Spinner1.Value)
(5)保存并运行表单。
2.新建一个表单,在该表单上添加一个列表框控件、一个标签控件和一个文本框控件。排列如下图,要求在列表框中选中一个学生姓名时,在文本框中会出现该学生的家庭住址。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在表单上添加一个列表框控件。右击列表框控件,选择“生成器”。在生成器中的“列表项”中选择学生表中的姓名字段作为填充列表的字段。关闭生成器。
(3)在表单上添加一个标签控件。设其Caption属性为“该生家住在:”。
(4)在表单上添加一个文本框控件。
(5)列表框控件的Click事件中填入如下代码:
Thisform.text1.value=家庭住址
(6)保存并运行表单。
3.用Xsda表创建一个表单,要求能输入新来学生和通过输入学号(或姓名)进行查找练习使用命令钮输入代码
(1)进入“表单设计器”:
(2)将表Xsda添加到“数据环境设计器”中,将整个表全拖入(或逐个字段拖入)“表单设计器”中,并调整大小和位置;
(3)单击“控件工具栏”上的“标签”钮后,在表单上方拖出标签框,在“属性”框的“Caption”栏中输入“学生情况一览表”(并在“FontName”、“FontSize”、“ForeColor”栏中确定字体、字号、颜色等);
(4)建三个命令按钮:“录入”、“查找”和“退出”;
(5) 右击“录入”命令按钮,选“代码”项,在“Click(单击)”事件中输入:
 APPEND BLANK && 添加一条空白记录
 ThisForm.Refresh 
(6)右击“查找”命令按钮,选“代码”项,在“Click(单击)”事件中输入:
 LOCATE FOR 学号=ALLTRIM(THISFORM.TEXT1.VALUE)
* LOCATE FOR 姓名=ALLTRIM(THISFORM.TEXT2.VALUE)
* SET FILTER TO 学号=ALLTRIM(THISFORM.TEXT1.VALUE);
or 姓名=ALLTRIM(THISFORM.TEXT2.VALUE)
IF EOF()
MESSAGEBOX("查无此人!")
ENDIF
THISFORM.REFRESH
(7) 右击“退出”命令按钮,选“代码”项,在“Click(单击)”事件中输入:
THISFORM.RELEASE
(8)保存名为“学生情况一览表”。
4.新建一个表单,在该表单上添加一个组合框控件和两个标签控件,排列如下图。要求当对组合框中的选项进行选择时,可以通过这种选择将标签控件上的字体改变。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在表单上添加两个标签控件。它们的Caption属性分别为“这是一个实验”和“请选择字体:”。
(3)再添加一个组合框。右击该控件,选择“生成器”。在生成器的列表项选项卡中,选择“手工输入数据”,再在列表中输入“黑体”“隶书”“宋体”“幼圆”四种字体的名称。关闭生成器。
(4)在组合框的Click事件中输入下列代码:
Thisform.label1.fontname=thisform.combo1.value
(5)保存并运行表单。
5.依据书库表新建一个表单,具有两个选项卡,分别为“查询”和“统计”。查询要求能够通过不同的条件进行查询。如可以根据书名,书号或者是作者进行查询。统计要求能够将订购所有教材所需的金额统计出来。
[解答]
(1)新建一个表单,打开表单设计器。
(2)在表单上添加一个页框控件,其两个选项卡的Caption的属性分别为“查询”和“统计”。
(3)选中第一个选项卡。右击选择数据环境。添书店表添加到数据环境中,将书库表中的几个字段从数据环境中拖入选项卡中。再添加两个标签“查找条件”和“查找内容”,两个文本框和两个命令按钮“查询”和“退出”。
(4)在“查询”命令按钮的Click事件中添加如下代码:
X=Alltrim(ThisForm.PageFrame1.Page1.Text1.Value)
Locate For &x=Alltrim(ThisForm.PageFrame1.Page1Text2.Value)
ThisForm.ReFresh
在“退出”按钮的Click事件中添加如下代码:
ThisForm.Release
(5)选中第二个选项卡。在其中添加一个表格控件。右击选择生成器,选择书库表的中所有字段为输出字段。关闭生成器。再添加一个标签“订购教材总费用为:”、一个文本框和一个命令按钮“统计”
(6)在“统计”命令按钮的Click事件中输入如下代码:
Sum 总金额To x
ThisForm.PageFrame1.Page2.Text1.Value=Str(x,10,2)
(7)保存并运行表单。
【高手进阶解答】
1.为Xsda表和Xscj表创建一个表单,使选择姓名,可显示该生的学号、课程号、分数等情况练习如何使用“组合框”和“列表框”,且对两个表的关联操作
(1)向表单中添加对象:
添加一个标签(Label)、一个组合框(Combo)、一个表格(Grid)、一个命令按钮(Command),并设定标题、字体、字号、颜色等。
(2)对组合框:右击“组合框”,选“生成器”命令。在“列表项”选项中选Xsda表的“姓名”字段;
(3)对表格:右击“表格”,选“生成器”命令。在“表格项”选项中选Xscj表的“学号”、“课程号”和“考试成绩”三字段;在“关系” 选项中的“父表中的关键字段”中选“Xsda.学号”,在“子表中的相关索引”中选“学号”
注意:子表“Xscj”要先建索引
【自我测试解答】
1.对Rsda表,建一个通过输入“编号”、“姓名”、“性别”或“职务”的查询表单练习如何使用“表格”、“单选”钮和“命令”钮
(1)将表Rsda添加到“数据环境设计器”中,将整个表全拖入(或逐个字段拖入)“表单设计器”中,并调整大小和位置;
(2)添加如下图所示的各控件(两个标签、一个文本框、一个单选按钮、两个命令按钮)
(3)单选按钮设置个数为“4”、各标题(Caption)分别如上图所示。
(4)在单选钮的“单击”(Click)事件中输入代码:
Do Case
Case ThisForm.OptionGroup1.VALUE = 1
ThisForm.Label2.Caption =,请输入要查询的编号:”
Case ThisForm.OptionGroup1.VALUE = 2
ThisForm.Label2.Caption =,请输入要查询的姓名:
Case ThisForm.OptionGroup1.VALUE = 3
ThisForm.Label2.Caption =,请输入要查询的性别:
Case ThisForm.OptionGroup1.VALUE = 4
ThisForm.Label2.Caption =,请输入要查询的职务:
EndCase
ThisForm.Text1.Value =,,&& 清空文本框1的值
ThisForm.Text1.SetFocus && 使文本框1获得焦点
ThisForm.Refresh
(5)在“查询”命令按钮的“单击”(Click)事件中输入代码:
Select Rsda
Do Case
Case ThisForm.OptionGroup1.VALUE = 1
Set Filter To 编号 = Alltrim(ThisForm.Text1.Value)
Case ThisForm.OptionGroup1.VALUE = 2
Set Filter To 姓名 = Alltrim(ThisForm.Text1.Value)
Case ThisForm.OptionGroup1.VALUE = 3
Set Filter To 性别 = Alltrim(ThisForm.Text1.Value)
Case ThisForm.OptionGroup1.VALUE = 4
Set Filter To 职务 = Alltrim(ThisForm.Text1.Value)
EndCase
ThisForm.Refresh
(6)在“退出”命令按钮的“单击”(Click)事件中输入代码:
ThisForm.Release
(7)保存名为“查询职工”。