实验八常用控件类对象综合应用Word下载.docx
《实验八常用控件类对象综合应用Word下载.docx》由会员分享,可在线阅读,更多相关《实验八常用控件类对象综合应用Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
同时c加1。
当c的值等于3时,显示“无权登陆”,同时将文本框设为无效,不允许输入。
3.属性设置。
表8.1对象属性设置
对象名
属性名
属性值
作用
form1
caption
口令验证
指定表单标题
label1
请输入口令
指定标签1提示文本
text1
passwordchar
*
文本框口令不可视
text1
selectonentry
.t.
选中文本框的文字
command1
退出
命令按钮1标题
4.编写代码。
表单form1的init事件代码:
publicc
c=0
&
c统计口令输入次数,每输入一次错误口令,c自动加1
命令按钮“退出”command1的click事件代码:
thisform.release
文本框text1的valid事件代码:
ifthis.value='
1234'
=messagebox('
口令正确,欢迎使用!
'
)
retu.t.
else
c=c+1
口令错误,请重输入!
这是第'
+str(c,1)+'
次输入!
retu.f.
ifc>
=3
无权登陆,请退出!
口令输入超过3次
thisform.text1.enabled=.f.
endif
thisform.refresh
5.调试运行界面如图8.2、8.3、8.4。
【例8.2】使用命令按钮设计一个调色板。
1.在表单上放置5个命令按钮,按下“红”按钮时,表单背景颜色为红色;
按下“黄”按钮时,表单背景颜色为黄色;
按下“蓝”按钮时,表单背景颜色为蓝色;
按下“白”按钮时,表单背景颜色为白色。
表单运行界面如图8.6所示。
图8.6“红色”按钮按下时运行界面图8.7表单设计界面
1.界面设计。
在“表单控件”工具栏上单击“命令按钮”控件,将command1-4拖至表单。
表单设计界面如图8.7所示。
主要为颜色属性设置,通过rgb函数不同取值改变表单背景颜色。
表8.2对象属性设置
调色板
红
command2
黄
命令按钮2标题
command3
蓝
命令按钮3标题
command4
白
命令按钮4标题
4.事件代码。
命令按钮“红”command1的click事件代码:
thisform.backcolor=rgb(255,0,0)
通过rgb函数不同取值改变表单背景颜色
命令按钮“黄”command2的click事件代码:
thisform.backcolor=rgb(255,255,0)
命令按钮“蓝”command3的click事件代码:
thisform.backcolor=rgb(0,0,255)
命令按钮“白”command4的click事件代码:
thisform.backcolor=rgb(255,255,255)
5.调试运行界面如图8.6、8.7。
【例8.3】使用列表框实现数据互传。
1.表单上放置源数据列表list1、目标数据列表list2,list1与学生表的“姓名”字段绑定;
2.表单运行时,按下“添加一项”按钮时,在list2中添加一个学生“姓名”;
按下“全部添加”按钮时,将list1中的内容全部添加到list2中;
3.按下“移去一项”按钮时,将list2内容移去一项至list1;
按下“全部移去”按钮时,将list2内容全部移至list1。
表单运行界面如图8.8、8.9、8.10、8.11所示。
图8.8“添加一项”运行界面图8.9“全部添加”运行界面
图8.10“移去一项”运行界面图8.11“全部移去”运行界面
在数据环境中添加学生表。
在“表单控件”工具栏上单击“命令按钮”控件、“标签”控件、“列表框”控件,将command1-4、label1-2、list1-2拖至表单,list1的数据源与学生表的“姓名”字段绑定。
表单设计界面如图8.12所示。
图8.12表单设计界面
2.题目分析。
(1)本题主要利用列表框的additem、removeitem和clear三个方法。
(2)“添加一项”将list1内容移到list2,即list1的内容减少一项(removeitem),list2的内容增加一项(additem);
“移去一项”将list2的内容移到list1,list2减少一项(removetiem),list1增加一项(additem)。
(3)“全部添加”将list1内容全部移到list2,即list1全部清空(clear),list2内容为学生表的“姓名”,通过sacn/endscan循环将表的“姓名”全部加到list2;
(4)“全部移去”将list2内容全部移到list1,即list2全部清空(clear),list1内容为学生表的“姓名”,通过sacn/endscan循环将表的“姓名”全部加到list1。
表8.3对象属性设置
列表框数据互传
源数据列表
label2
目标数据列表
指定标签2提示文本
list1
rowsource
无
列表框数据源
rowsourcetype
列表框数据源类型
list2
添加一项
全部添加
移去一项
全部移去
命令按钮“添加一项”command1的click事件代码:
thisform.list2.additem(thisform.list1.value)
thisform.list1.removeitem(thisform.list1.listindex)
“添加一项”将list1内容移到list2,即list1的内容减少一项(removeitem),list2的内容增加一项(additem)。
命令按钮“全部添加”command2的click事件代码:
thisform.list1.clear
thisform.list2.clear
scan
thisform.list2.additem(姓名)
endscan
“全部添加”将list1内容全部移到list2,即list1全部清空(clear),list2内容为学生表的“姓名”。
命令按钮“移去一项”command3的click事件:
thisform.list1.additem(thisform.list2.value)
thisform.list2.removeitem(thisform.list2.listindex)
命令按钮“全部移去”command4的click事件:
thisform.list1.additem(姓名)
“全部移去”将list2内容全部移到list1,即list2全部清空(clear),list1内容为学生表的“姓名”。
5.运行界面如图8.8、8.9、8.10、8.11。
【例8.4】利用组合框统计学生的平均成绩。
1.显示指定学生的平均成绩和成绩档次;
2.不及格的平均成绩和档次用红色显示;
3.组合框数据源与学生表“姓名”绑定,在组合框combo1中选中某学生时,按“确定”按钮,text1中显示该生姓名,text2中显示该学生平均成绩,text3显示成绩档次;
4.按“继续”按钮,组合框combo1获得焦点;
5.按“退出”按钮时,释放表单。
表单运行界面如图8.13、8.14所示。
图8.13查询学生平均成绩及档次图8.14按下“继续”按钮界面
将学生表、成绩表加入数据环境。
在“常用工具栏”单击“标签”、“命令按钮”、“组合框”、“文本框”控件,将label1-4、command1-3、combo1、text1-3拖至表单。
表单设计界面如图8.15所示。
图8.15表单设计界面
(1)组合框和‘学生’表中的“姓名”字段绑定,通过sacn-endscan循环,combo1的additem方法,将“姓名”加入combo1。
(2)数据环境中放置学生和成绩两张表,通过select语句切换表。
(不能使用use命令切换!
)。
combo1中输入的是学生的“姓名”,要统计该生的平均成绩,必须使用成绩表,而成绩表中只有“学号”字段,没有“姓名”字段,所以必须设置一个变量xh存储“学号”。
先选择学生表,查找该学生,若存在,将“学号“值取出放在变量xh中,再选择成绩表,用averrage函数求出该生的平均成绩pjcj。
(3)成绩等级可以通过substr字符串截取,也可以通过docase/endcase语句实现。
求出的成绩分为大于60分(不是红色字体)和小于60分(红色字体)两种情况。
表8.4对象属性设置
成绩查询信息
请输入或选择学生
标签1提示文本
学生
标签2提示文本
label3
平均成绩
标签3提示文本
label4
成绩等级
标签4提示文本
确定
继续
settalkoff
sele学生
scan
bo1.additem(学生.姓名)
组合框和学生表中的“姓名”字段绑定
命令按钮“确定”command1的click事件代码:
locateforalltrim(姓名)=alltrim(bo1.value)
xh=学号
sele成绩
average成绩for学号=xhtopjcj
先选择学生表,查找该学生,若存在,将“学号”值取出放在变量xh中,再选择成绩表,用averrage函数求出该生的平均成绩pjcj。
ifpjcj<
60
p=0
p=int(pjcj/10)-5
ifpjcj>
=0
dc=substr("
不及格及格中良优"
6*p+1,6)
&
成绩档次
thisform.text1.value=bo1.value
ifpjcj<
thisform.text2.forecolor=rgb(255,0,0)
thisform.text3.forecolor=rgb(255,0,0)
成绩小于60分用红色背景
thisform.text2.forecolor=rgb(0,0,255)
thisform.text3.forecolor=rgb(0,0,255)
endif
thisform.text2.value=pjcj
thisform.text3.value=dc
thisform.text1.setfocus
命令按钮‘继续’command2的click事件代码:
bo1.setfocus
thisform.setall("
value"
"
"
textbox"
)
命令按钮‘退出’commnad3的click事件代码:
5.调试运行界面如图8.13、8.14。
【例8.5】利用计数器设计一个数字时钟计数器。
1.表单运行时,按下“复位”按钮,计数器清0;
2.按“计时”按钮时,从0开始计时;
3.按“停止”按钮时,停止计数,文本框显示暂停时的计时;
4.按下“退出”时,释放表单。
运行界面如图8.16、8.17、8.18所示。
图8.16表单运行初始界面图8.17按“计时”按钮表单运行界面
图8.18按“停止”按钮表单运行界面图8.19表单设计界面
1.创建表单。
在表单上单击“常用工具栏”,将时钟timer1、文本框text1、4个命令按钮command1-4拖至表单。
表单初始界面如图8.19所示。
(1)为进行分、秒、时的计时工作,新增3个表单属性thisform.m(代表秒)、thisform.f(代表分)、thisform.s(代表小时)。
(2)表单刚运行时,计时器不工作(enabled为假),thisform.m、thisfor.f、thisform.s为0,文本框显示“00:
00:
00”。
(3)“复位”按钮,表示计数从0开始,文本框显示“00:
00”同时thisform.m、thisfor.f、thisform.s全部清为0。
(4)“计时”按钮表示计数器开始工作(enabled为真),每隔1秒进入timer1的timer事件;
“停止”表示计数器停止工作(enabled为假)。
(5)计数器每隔1秒加1,从秒开始(thisform.m),当秒加到60,分加1(thisform.f),秒清0;
当分加到60,时加1(thisform.s),分、秒清0;
当时加到24,秒、分、时全清0。
新建表单属性thisform.m、thisform.f、thisform.s,代表计时秒、分、小时。
表8.5对象属性设置
计时器
复位
计时
停止
fontsize
48
设置文本框字体大小
timer1
interval
1000
设置计时器时间间隔
thisform.timer1.enabled=.f.
thisform.text1.value='
00:
00'
thisform.m=0
thisform.s=0
thisform.f=0
表单刚运行时,计时器不工作(enabled为假),thisform.m、thisfor.f、
thisform.s为0,文本框显示“00:
命令按钮“复位”command1的click事件代码:
“复位”按钮,表示计数从0开始,文本框显示“00:
00”同时thisform.m、
thisfor.f、thisform.s全部清为0。
命令按钮“计时”command2的click事件代码:
thisform.timer1.enabled=.t.
命令按钮“停止”command3的click事件代码:
命令按钮“退出”command4的click事件代码:
thisform.release
timer1的timer事件代码:
thisform.m=thisform.m+1
ifthisform.m=60
thisform.f=thisform.f+1
thisform.m=0
ifthisform.f=60
thisform.s=thisform.s+1
thisform.f=0
ifthisform.s=24
thisform.s=0
thisform.m=0
thisform.f=0
endif
计数器每隔1秒加1,从秒开始(thisform.m),当秒加到60,分加1(thisform.f),
秒清0;
当时加到24,秒、分、&
时全清0。
mm=iif(thisform.m<
10,'
0'
+str(thisform.m,1),str(thisform.m,2))
ff=iif(thisform.f<
+str(thisform.f,1),str(thisform.f,2))
ss=iif(thisform.s<
+str(thisform.s,1),str(thisform.s,2))
若数字小于10,再数字前面加一个前“0”
thisform.text1.value=ss+'
:
+ff+'
+mm
5.调试运行界面如图8.16、8.17、8.18。
五、上机练习题
【练习8.1】设计一个可以改变表单标题和标签控件标题的表单,表单刚运行时,表单的标题为form1,标签的标题为label1,如图8.20(a)。
要求:
鼠标单击标签控件后,表单的标题显示为“欢迎表单”,表单的背景颜色变为红色,标签的标题显示为“欢迎使用vfp”,表单运行界面如图8.20(b)。
(b)
图8.20练习8.1
【练习8.2】设计一个调查表单,能够统计手机使用的网络类型。
(1)被调查者选择网络类型,单击“提交”按钮后,更改”手机类型.dbf”相应字段的内容;
(2)单击“查看”按钮,显示目前为止各手机使用的网络类型的累计数值。
手机类型.dbf (b)(c)单击“查看”按钮
图8.11练习8.2
【练习8.3】设计一个中文日历表单.
(1)文本框中显示汉语格式的日期;
(2)单击微调控件的向上箭头时,日期加一天,单击微调控件的向下箭头时,日期减一天。
图8.22 练习8.3
【练习8.4】创建一个求指定班级平均成绩的表单。
(1)在组合框中选择班级(学号的左四位)后,表单将自动显示对应班级的所有学生的总平均成绩;
(2)按"
退出"
按钮时,自动关闭表单。
图8.23 练习8.4
【练习8.5】查询指定班级的学生名单。
(1)输入班级号按“确定”按钮后,把指定班级的学生名单添加到组合框中;
(2)在学生名单添加到组合框后,在组合框中选择一个学生姓名,标签3提示当前学生的记录号。
图8.24 练习8.5
【练习8.6】创建一个动态显示信息的表单,在文本框中显示文字“欢迎使用表单”。
每秒显示一个字(如图8.25(a)、(b)所示),当全部显示完毕图(c)再回到图(a)重新开始每秒逐个显示,直到按下退出按钮为止。
图8.25 练习8.6