1、同时c加1。当c的值等于3时,显示“无权登陆”,同时将文本框设为无效,不允许输入。3属性设置。表8.1 对象属性设置对象名属性名属性值作用form1caption口令验证指定表单标题label1请输入口令指定标签1提示文本text1 passwordchar*文本框口令不可视text1selectonentry.t.选中文本框的文字command1退出命令按钮1标题4编写代码。表单form1的init事件代码:public cc=0&c统计口令输入次数,每输入一次错误口令,c自动加1命令按钮“退出”command1的click事件代码:thisform.release文本框text1的vali
2、d事件代码:if this.value=1234=messagebox(口令正确,欢迎使用!)retu .t. elsec=c+1口令错误,请重输入!这是第+str(c,1)+次输入!retu .f.if c=3无权登陆,请退出!口令输入超过3次thisform.text1.enabled=.f.endifthisform.refresh 5调试运行界面如图8.2、8.3、8.4。【例8.2】使用命令按钮设计一个调色板。1在表单上放置5个命令按钮,按下“红”按钮时,表单背景颜色为红色;按下“黄”按钮时,表单背景颜色为黄色;按下“蓝”按钮时,表单背景颜色为蓝色;按下“白”按钮时,表单背景颜色为白
3、色。表单运行界面如图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的cl
4、ick事件代码: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中的内
5、容全部添加到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题
6、目分析。 (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内容全
7、部移到list1,即list2全部清空(clear),list1内容为学生表的“姓名”,通过sacn/endscan循环将表的“姓名”全部加到list1。表8.3 对象属性设置列表框数据互传源数据列表label2目标数据列表指定标签2提示文本list1rowsource无列表框数据源rowsourcetype列表框数据源类型list2添加一项全部添加移去一项全部移去命令按钮“添加一项”command1的click事件代码:thisform.list2.additem(thisform.list1.value)thisform.list1.removeitem(thisform.list1.li
8、stindex)“添加一项”将list1内容移到list2,即list1的内容减少一项(removeitem),list2的内容增加一项(additem)。命令按钮“全部添加”command2的click事件代码:thisform.list1.clearthisform.list2.clearscanthisform.list2.additem(姓名)endscan“全部添加”将list1内容全部移到list2,即list1全部清空(clear),list2内容为学生表的“姓名”。命令按钮“移去一项”command3的click事件:thisform.list1.additem(thisfor
9、m.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中选中某学生时,按“确定
10、”按钮,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的
11、additem方法,将“姓名”加入combo1。 (2)数据环境中放置学生和成绩两张表,通过select语句切换表。(不能使用use命令切换!)。combo1中输入的是学生的“姓名”,要统计该生的平均成绩,必须使用成绩表,而成绩表中只有“学号”字段,没有“姓名”字段,所以必须设置一个变量xh存储“学号”。先选择学生表,查找该学生,若存在,将“学号“值取出放在变量xh中,再选择成绩表,用averrage函数求出该生的平均成绩pjcj。 (3)成绩等级可以通过substr字符串截取,也可以通过docase/endcase语句实现。求出的成绩分为大于60分(不是红色字体)和小于60分(红色字体)两种
12、情况。表8.4 对象属性设置成绩查询信息请输入或选择学生标签1提示文本学生标签2提示文本label3平均成绩标签3提示文本label4成绩等级标签4提示文本确定继续set talk offsele 学生scan bo1.additem(学生.姓名)组合框和学生表中的“姓名”字段绑定命令按钮“确定”command1的click事件代码:locate for alltrim(姓名)=alltrim(bo1.value)xh=学号sele 成绩average 成绩 for 学号=xh to pjcj先选择学生表,查找该学生,若存在,将“学号”值取出放在变量xh中,再选择成绩表,用averrage函数
13、求出该生的平均成绩pjcj。if pjcj=0 dc=substr(不及格及格 中 良 优 ,6*p+1,6) &成绩档次thisform.text1.value=bo1.value if pjcj 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 this
14、form.text3.value=dcthisform.text1.setfocus命令按钮继续command2的click事件代码:bo1.setfocusthisform.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.1
15、7 按“计时”按钮表单运行界面图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开始,文本框显示
16、“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 对象属性设置计时器复位计时停止font
17、size48设置文本框字体大小timer1interval1000设置计时器时间间隔thisform.timer1.enabled=.f.thisform.text1.value=00:00thisform.m=0thisform.s=0thisform.f=0表单刚运行时,计时器不工作(enabled为假),thisform.m、thisfor.f、thisform.s为0,文本框显示“00:命令按钮“复位”command1的click事件代码:“复位”按钮,表示计数从0开始,文本框显示“00:00”同时 thisform.m、thisfor.f、thisform.s全部清为0。命令按钮“计
18、时”command2的click事件代码:thisform.timer1.enabled=.t.命令按钮“停止”command3的click事件代码:命令按钮“退出”command4的click事件代码: thisform.releasetimer1的timer事件代码:thisform.m=thisform.m+1if thisform.m=60 thisform.f=thisform.f+1 thisform.m=0 if thisform.f=60 thisform.s=thisform.s+1 thisform.f=0 if thisform.s=24 thisform.s=0 thi
19、sform.m=0 thisform.f=0 endif计数器每隔1秒加1,从秒开始(thisform.m),当秒加到60,分加1(thisform.f),秒清0;当时加到24,秒、分、&时全清0。mm=iif(thisform.m10,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.
20、value=ss+:+ff+mm5调试运行界面如图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)单击“查看”按钮,显示目前为止各
21、手机使用的网络类型的累计数值。 手机类型.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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1