VF表单设计
1、用表单设计一个登录界面,如图下所示,当用户输入用户名和口令后,按确认键检验输入是否正确(假设用户名为abcdef,口令为654321)。如果输入正确,就显示“欢迎使用„„”;如果输入不正确,则显示“用户名或口令不对,请重输„„”;如果三次输入都不正确,就显示“用户名或口令不对,登录失败!”并且关闭表单。
操作步骤如下:
(1)新建表单,然后在表单上添加两个标签、两个文本框和一个命令按钮。
(2)设置两个标签和一个命令按钮的caption属性为“用户名:”、“口令:”和“确认”。
(3)将命令按钮“确认”的default的属性值设置为.t.。
(4)设置文本框text2的inputmask属性值,在设置框中直接输入999999或输入“999999”。
(5)设置文本框text2的passwordchar属性为“*”。
(6)选择“表单”下的“新建属性”命令,打开“新建属性”对话框,为表单添加新属性numc。在“属性”窗口中将默认值设置为0。
(7)用鼠标双击“确认”按钮,打开编辑事件代码窗口,在click事件中输入下面的代码 :
if thisform.text1.value="abcdef" and thisform.text2.value="654321"
wait "欢迎使用„„"window timeout 3
thisform.release
else
thisform.numc=thisform.numc+1
if thisform.numc=3
wait "用户名或口令不对,登录失败!"window timeout 3
thisform.release
else
wait "用户名或口令不对,请重输„„"window timeout 3
endif
endif
2、用编辑框做一个趣味小实例——摸奖机,程序运行界面如下:
【分析】本题并无复杂的知识点,主要是在命令按钮的click事件中对文本框输入的值进行判断,根据所输入的选择值将其对应的奖品显示到编辑框中。
【操作】
(1)新建表单,将其caption属性值设置为“摸奖机”,autocenter属性值设置为.t.,width和height属性值分别设置为360和220,并将其保存为“摸奖机.scx”。
(2)添加控件并设置属性:
①向表单上添加一个标签控件label1,并将其caption属性值设置为“请输入您的选择(1-4)”。
②向表单上添加一个文本框控件text1,将其inputmask属性值设置为9,value属性值设置为0。
③向表单上添加一个命令按钮command1,并将其caption属性值设置为“您获得的奖品是”。
④向表单上添加一个编辑框控件edit1。
(3)按上图所示的程序运行界面,适当调整各控件的大小及在表单上的位置。
(4)添加事件代码:
命令按钮command1的click事件代码:
do case
case thisform.text1.value=1
thisform.edit1.value="您的奖品是手机一部!"
case thisform.text1.value=2
thisform.edit1.value="您的奖品是10000元!"
case thisform.text1.value=3
thisform.edit1.value="您的奖品是学习机一部!"
case thisform.text1.value=4
thisform.edit1.value="您的奖品是彩电一台!"
otherwise
thisform.edit1.value="谢谢您的参与!"
endcase
3、用面向对象程序设计方法编写程序,判断某一年是否是闰年。
[操作]
(1)选择“文件”菜单下的“新建”功能,在弹出的“新建”对话框中选择“表单”选项,然后单击“新建文件”按钮。
(2)使用“表单控件”工具栏,在表单中的合适位置添加2个标签label1、label2,1个文本框text1,1个命令按钮command1。各控件位置如后面左图所示。
(3)在表单中选中添加的标签label1,在“属性”窗口中将其caption属性设置为“请输入需要判断的年份”;在表单中选中添加的命令按钮,在“属性”窗口中将其caption属性设置为“判断”。设置属性后程序界面如后面左图所示。
(4)在命令按钮command1的click事件中输入代码:
y=val(thisform.text1.value)
if y%4=0 and y%1000 or y%400=0
thisform.label2.caption=str(y)+"是闰年!"
else
thisform.label2.caption=str(y)+"不是闰年!"
endif
4、设计竞赛用的评分程序:去掉一个最高分,去掉一个最低分,选手的最后得分为剩下分数的平均分。
【思路】设计一个可以输入若干评委分数的表单,可以通过两个for循环分别找出分数的最大值和最小值,存入到两个变量,把评委的分数存入到一个数组中,计算时去掉找出的最大值和最小值即可得出最后得分。具体操作步骤和代码如下:
新建表单,设置表单控件布局和属性,设置界面如下:
命令按钮command1(计算)的click事件代码:
dime b(5)
b(1)=val(allt(thisform.text1.value))
b(2)=val(allt(thisform.text2.value))
b(3)=val(allt(thisform.text3.value))
b(4)=val(allt(thisform.text4.value))
b(5)=val(allt(thisform.text5.value))
max1=b(1)
min1=b(1)
*找出评委的最高分
for i=1 to 5
if b(i)>max1
max1=b(i)
endif
endfor
*找出评委的最低分
for j=1 to 5
if b(j)
min1=b(j)
endif
endfor
*计算最后得分 thisform.text6.value=str((b(1)+b(2)+b(3)+b(4)+b(5)-max1-min1)/3,6,2)
5、建立如下图所示的表单,表单上有1个形状、2个命令按钮。单击按钮“画圆”,则显示红色的圆,单击按钮“画正方形”,则显示白色的方框。
“commandgroup1”控件click事件代码:
Do case
case this.value=1
thisform.shape1.curvature=99
thisform.shape1.backcolor=rgb(255,0,0)
case this.value=2
thisform.shape1.curvature=0
thisform.shape1.backcolor=rgb(255,255,255)
endcase
6、在表单上有一个命令按钮和命令按钮组,该命令按钮组包括3个命令按钮。当单击命令按钮组中某个按钮时,命令按钮组的背景色变成相应按钮指定的颜色;单击还原命令按钮,命令按钮组背景色还原成默认的颜色,其界面如图所示。
命令按钮组的click事件代码:
do case
case this.value=1
this.backcolor=rgb(255,0,0)
case this.value=2
this.backcolor=rgb(255,255,0)
case this.value=3
this.backcolor=rgb(0,0,255)
case this.value=4
this.backcolor=rgb(255,255,255)
endcase
thisform.refresh
还原命令按钮的click事件代码:
thisform.commandgroup1.backcolor=rgb(192,192,192)
thisform.refresh
7、在表单上有一个文本框和三个复选框。当单击某个复选框时,文本框中的文字会随之变化,如图所示。
操作步骤:
(1)选择控件。本例中使用文本框控件和复选框控件。
(2)属性设置。文本框的value属性设为“欢迎使用vfp!”,复选框1的caption属性设为“粗体”,复选框2的caption属性设为“斜体”,复选框3的caption属性设为“下划线”。
(3)编写代码。
双击复选框1,打开代码窗口,在click事件中输入如下代码:
if this.value=1
thisform.text1.fontbold=.t.
else
thisform.text1.fontbold=.f.
endif
双击复选框2,打开代码窗口,在click事件中输入如下代码:
if this.value=1
thisform.text1.fontitalic=.t.
else
thisform.text1.fontitalic=.f.
endif
双击复选框3,打开代码窗口,在click事件中输入如下代码:
if this.value=1
thisform.text1.fontunderline=.t.
else
thisform.text1.fontunderline=.f.
endif
8、设置字体程序,点击某字体按钮,则文字“计算机”就变为该字体。
“加粗”check1的click事件代码:
if this.value=1
thisform.label1.fontbold=.t.
else
thisform.label1.fontbold=.f.
endif
“commandgroup1”控件click事件代码:
do case
case thisform.commandgroup1.value=1
thisform.label1.fontname="隶书"
case this.value=2
thisform.label1.fontname="华文行楷"
case this.value=3
thisform.label1.fontname="华文彩云"
case this.value=4
thisform.label1.fontname="华文新魏"
endcase
9、设计一个“职工基本情况”表单。该表单的功能如下:单击其底部的“第一个”按钮将显示职工数据库表的第一条记录;单击“上一个”扫钮将显示上一条记录;单击“下一个”按钮将显示下一条记录;单击“最后一个”按钮将显示最后一条记录。
制作快速职工表单,其中数据表使用职工.dbf,然后插入命令按钮组command1group,将各个按钮的caption分别命名后,编写command1group的click事件代码如下:
n=this.value && 按钮组选择值
do case
case n=1 && 第一个
go top
case n=2 && 上一个
if bof() or recno()=1
go bottom
else
skip -1
endif
case n=3 && 下一个
if eof() or recno()=reccount()
go top
else
skip
endif
case n=4 && 最后一个
go bottom
endcase
thisform.refresh
10、设计一个简单的计算器。要求:单击数字键、小数点或运算符号键,能将相应字符添加到文本框中计算式的末尾,若单击“清除”按钮,可将文本框清空:若单击“=”键,则计算文本框中算式的值并将其结果显示出来。若文本框中的式子无法计算则显示“运算式错误”字样。 (1)新建一个名为计算器的表单,设置表单的Caption属性值为:计算器。
(2)在表单中添加一个文本框控件,15个命令按钮控件,调整控件到合适的位置。设置命令按钮的Caption属性值为“=”号时,在Caption属性设置处输入:="="
(3)设置文本框的Format属性的值设置为T,定义一个名为x的表单属性。
(4)设置所有标有0~9以及“.”的命令按钮的Click事件的代码如下:
IF Thisform.x &&如果刚按过"="按钮
This.Parent.Text1.Value="" &&清除式子
Thisform.x=.F. &&表示已按其它按钮
ENDIF
This.Parent.Text1.Value=This.Parent.Text1.Value+This.Caption
设置所有标有运算符的命令按钮的Click事件的代码如下:
IF Thisform.x &&如果刚按过"="按钮
Thisform.x=.f. &&表示已按其它按钮
ENDIF
This.Parent.Text1.Value=This.Parent.Text1.Value+This.Caption
(5)在“=”命令按钮的Click事件中添加下列代码:
y=This.Parent.Text1.Value &&获取表达式
y=&y
This.Parent.Text1.Value=STR(y,50,6) &&显示表达式的值
Thisform.x=.t.