实验七
一、
实验题目:
表单创建
二、实验目的与要求:
(1)掌握类、对象的设计及调用方法等。
(2)掌握用表单向导设计单表、多表表单的操作。
(3)掌握用表单设计器设计表单的方法。
(4)掌握重要表单控件的使用和使用控件生成器生成控件。
三、实验内容:
实验7-1设计一个用户登录表单,在表单上创建一个组合框和一个文本框,从组合框选择用户名,在文本框中输入口令,三次不正确退出。
方法步骤:

图7.1
(1)新建表单Form1,从表单控件工具栏中拖入两个标签Label1、Label2,两个命令按钮Command1、Command2,以及一个组合框控件Combo1和一个文本框控件Text1。并按图7.1调整好其位置和大小。
(2)设置Label1的Caption属性值为“用户名”,Label2的Caption属性值为“密码”,Command1、Command2的Caption属性值分别为“登录”和“退出”。Form1的Caption属性值为“登录”。
(3)设置Combo1的RowSourceType属性为“1-值”,RowSource属性为“孙瑞,刘燕”,Text1的PasswordChar属性为“*”。
(4)在Form1的Init Event过程中加入如下代码:
public num
num=0
在Command1的Click Event过程中加入如下的程序代码:
if (alltrim(thisform.combo1.value)=="孙瑞" and alltrim(thisform.text1.value)=="123456") or (alltrim(thisform.combo1.value)=="刘燕" and alltrim(thisform.text1.value)=="abcdef")
thisform.release
do 主菜单.mpr
else
num=num+1
if num<3
messagebox("用户名或密码错误,请重试",0+48,"注意")
thisform.combo1.value=""
thisform.text1.value=""
thisform.combo1.setfocus
thisform.refresh
else
messagebox("登陆失败,请退出")
thisform.command1.enabled=.f.
thisform.command2.setfocus
endif
endif
在Command1的Click Event过程中加入如下的程序代码:
thisform.release
实验7-2设计一个标题为“商品浏览”的多页表单,含有“基本信息”、“简介”、“图片”三个选项卡,如图7.2、7.3、7.4所示:要求可以通过右侧的按钮选择分别在三张选项卡中显示的商品的有关信息

图7.2

图7.3

图7.4
方法步骤:
(1)新建表单“商品浏览表单”,在其数据环境中添加商品.dbf
(2)通过表单控件工具栏在表单上添加一个页框控件PageFrame1和6个命令按钮控件分别为:Command1、Command2、Command3、Command4、Command5,并调整好各控件的位置和大小。
(3)定义表单的Caption属性值为“商品浏览表单”,AutoCenter属性为T,Command1的
Caption属性值为“第一条”,Command2的Caption属性值为“前一条”,Command3的Caption属性值为“后一条”,Command4的Caption属性值为“最后一条”,Command5的Caption属性值为“退出”。设置页框PageFrame1的PageCount属性为3。
(4)设置第一个页面Page1:右击页框控件,在弹出的快捷菜单中选择“编辑”命令,单击选中第一个页面,然后直接从数据环境设计器中直接将“商品编号”、“商品名称”、“类别编码”“单位” 4个字段拖入该页面。拖入的各字段将自动实现与表中对应字段的数据绑定。调整各字段控件的大小和布局,再将该页面Page1的Caption属性设置为“基本信息”。
(5)设置第二个页面Page2:用类似的方法选中第二个页面,从数据环境设计器中直接将“简介”字段拖入该页面,调整该控件的大小与位置,再将该页面Page2的Caption属性设置为“简介”。
(6)设置第三个页面Page3:用类似的方法选中第三个页面,从数据环境设计器中直接将“图片”字段拖入该页面,调整该控件的大小与位置,再将该页面Page3的Caption属性设置为“图片”。
(7)为Command1的Click Event设计如下代码:
go top
thisform.pageframe1.page1.refresh
thisform.pageframe1.page2.refresh
thisform.pageframe1.page3.refresh
(8)为Command2的Click Event设计如下代码:
skip -1
if bof()
go top
thisform.command2.enabled=.f.
endif
thisform.command3.enabled=.t.
thisform.pageframe1.page1.refresh
thisform.pageframe1.page2.refresh
thisform.pageframe1.page3.refresh
(9)为Command3的Click Event设计如下代码:
skip
if eof()
go bottom
thisform.command3.enabled=.f.
endif
thisform.command2.enabled=.t.
thisform.pageframe1.page1.refresh
thisform.pageframe1.page2.refresh
thisform.pageframe1.page3.refresh
(10)为Command4的Click Event设计如下代码:
go bottom
thisform.pageframe1.page1.refresh
thisform.pageframe1.page2.refresh
thisform.pageframe1.page3.refresh
(11)为Command5的Click Event设计如下代码:
thisform.release
(12)保存表单,调试运行。
实验7-3 如图7.5所示,设计一个能在5个数据表中选择任意一个进行编辑的表单。此表单运行时要求:用户若在选中某一个单选按钮后,单击确定按钮,则被选定的数据表即会显示出来供用户修改。

图7.5
方法步骤:
(1)新建表单“增加记录”
(2)通过表单控件工具栏,在表单上添加一个标签Label1,一个选项按钮组Optiongroup1,两个命令按扭Command1、Command2,并调整好各控件的位置和大小。
(3)定义表单的Caption属性值为“增加记录”,AutoCenter属性为T,Label1 的Caption属性为:“请选择要增加记录的表:”,Command1和Command2的Caption属性分别为“确定”和“退出”,设置选项按钮组的ButtonCount属性为:5.
(4)设置第一个按钮Option1:右击选项按钮组空间,在弹出的快捷菜单中选择“编辑”命令,单击选中第一个按钮,将其Caption属性值设置为:商品表。
(5)用同样的方法设置第二个按钮Option2的Caption属性值为:订购单表;设置第三个按钮Option3的Caption属性值为:供应商表;设置第四个按钮Option4的Caption属性值为:销售表;设置第五个按钮Option5的Caption属性值为:客户表;
(6)为Optiongroup1的Click Event设计如下代码:
do case
case this.value=1
select 商品
case this.value=2
select 订购单
case this.value=3
select 供应商
case this.value=4
select 销售
case this.value=5
select 客户
endcase
(7)为Command1的Click Event设计如下代码:
append
(8) 为Command2的Click Event设计如下代码:
thisform.release
(9)保存表单,调试运行。
实验7-4 设计一个可用微调控件来控制形状的曲率的表单,单击“退出”按钮可关闭本表单。

图7.6
方法步骤:
(1)创建一个表单
(2)从表单工具栏中拖入一个形状Shape1一个命令按扭Command1一个微调控件Spinner1到表单中,并调整它们的位置和大小
(3)设置Shape1的Backcolor(背景色)属性为:255,128,64;Fillcolor(填充色)为:255,0,0;Fillstyle属性为:7—对角交叉
(4)设置Spinner1的Spinnerhighvalue(指定单击上下箭头的按扭增减数值的上限)属性为99;Spinnerlowvalue(指定单击上下箭头的按扭增减数值的下限)属性为0;Increment(指定每单击一次上下箭头按扭的增减数值)属性为5;Fontsize属性为16。
(5)设置Command1的Caption属性为“退出” Fontsize属性为12
(6)编写Command1的Click事件代码如下:thisform.release
(7)编写Spinner1的Interactivechange事件代码如下:
thisform.shape1.curvature=this.value