VFP无表表单.docx
《VFP无表表单.docx》由会员分享,可在线阅读,更多相关《VFP无表表单.docx(18页珍藏版)》请在冰豆网上搜索。
![VFP无表表单.docx](https://file1.bdocx.com/fileroot1/2022-12/31/07415c0b-2f61-4285-bfdf-cedc1451a333/07415c0b-2f61-4285-bfdf-cedc1451a3331.gif)
VFP无表表单
上机程序设计题(无表表单部分)
VisualFoxpro语言设计题目如下,单击“回答”按钮,进行考试。
在考生文件夹的Paper子文件夹中有界面文件Design.jpg。
请设计程序,编制表单,在Paper子文件夹中生成Design.scx文件。
注意:
以默认方式命名控件,以从左至右,从上向下的顺序拖放控件。
1.要求:
1.编制一个按钮组调色板;
2.当用户按了命令按钮组中的某个按钮后,表单的背景色就会变为按钮指定的对应颜色。
Ø设置表单标题为“按钮组调色板”。
Ø设置命令按钮组中的按钮(右击按钮组,选“生成器”)
(1)表单Form1的Init事件代码:
(其它属性均已在属性窗口中设置)
this.backcolor=rgb(255,0,0)
(2)命令按钮组CommandGroup1的Click事件代码:
docase
casethis.value=1
thisform.backcolor=rgb(255,0,0)
casethis.value=2
thisform.backcolor=rgb(0,255,0)
casethis.value=3
thisform.backcolor=rgb(0,0,255)
casethis.value=4
thisform.backcolor=rgb(0,0,0)
casethis.value=5
thisform.backcolor=rgb(255,255,255)
endcase
2.要求:
1.编制一个按钮组调色板;
2.当用户按了命令按钮组中的某个按钮后,命令按钮组的背景色就会变为按钮指定的对应颜色。
Ø设置表单标题为“按钮组调色板”。
Ø设置命令按钮组中的按钮。
(1)表单Form1的Init事件代码:
(其它属性均已在属性窗口中设置)
mandgroup1.backcolor=rgb(255,0,0)
(2)命令按钮组CommandGroup1的Click事件代码:
docase
casethis.value=1
this.backcolor=rgb(255,0,0)
casethis.value=2
this.backcolor=rgb(0,255,0)
casethis.value=3
this.backcolor=rgb(0,0,255)
casethis.value=4
this.backcolor=rgb(0,0,0)
casethis.value=5
this.backcolor=rgb(255,255,255)
endcase
3.要求:
1.编制一个选项按钮组调色板;
2.当用户按了某个选项按钮后,表单的背景色就会变为按钮指定的对应颜色。
Ø设置表单标题为“选项按钮组调色板”。
Ø设置选项按钮组中的按钮(生成器)
(1)表单Form1的Init事件代码:
this.backcolor=rgb(255,0,0)
(2)OptionGroup1的Click事件代码:
docase
casethis.value=1
thisform.backcolor=rgb(255,0,0)
casethis.value=2
thisform.backcolor=rgb(0,255,0)
casethis.value=3
thisform.backcolor=rgb(0,0,255)
casethis.value=4
thisform.backcolor=rgb(0,0,0)
casethis.value=5
thisform.backcolor=rgb(255,255,255)
endcase
4.要求:
1.编制一个选项按钮组调色板;
2.当用户按了某个按钮后,选项按钮组的背景色就会变。
Ø设置表单标题为“选项按钮组调色板”。
Ø设置选项按钮组中的按钮。
(1)表单Form1的Init事件代码:
this.optiongroup1.backcolor=rgb(255,0,0)
(2)选项按钮组OptionGroup1的Click事件代码:
docase
casethis.value=1
this.backcolor=rgb(255,0,0)
casethis.value=2
this.backcolor=rgb(0,255,0)
casethis.value=3
this.backcolor=rgb(0,0,255)
casethis.value=4
this.backcolor=rgb(0,0,0)
casethis.value=5
this.backcolor=rgb(255,255,255)
endcase
5.要求:
编制一个选项卡组(页框)调色板,当用户按了某个选项卡(页)后,当前页的背景色就会变为选项卡标题指定的对应颜色。
Ø设置表单标题为“选页调色板”。
Ø设置页框中各page的caption属性。
(右击页框后选(编辑)再设置,下同)
Ø分别设置页框中各选项卡的颜色。
Ø将黑选项卡中的标题“黑”的颜色设为白色。
该题可以不写一行代码。
6.要求:
1.编制一个信息显示(时钟)界面,显示当前时间(每秒动态跳动一次);
2.并将表单的背景设置为蓝、绿两色自动变换(与时间同步切换)。
Ø设置表单标题为“信息窗”。
Ø设置文本框Text1的Fontsize属性(将其放大)。
Ø设置文本框的的ReadOnly属性为真。
Ø设置计时器Timer1的Interval属性为1000。
(1)表单Form1的Init事件代码:
ifval(right(time(),2))%2=0
thisform.backcolor=rgb(0,255,0)
else
thisform.backcolor=rgb(0,0,255)
endif
this.text1.value=time()
(2)计时器控件Timer1的Timer事件代码:
thisform.text1.value=time()
ifval(right(time(),2))%2=0
thisform.backcolor=rgb(0,255,0)
else
thisform.backcolor=rgb(0,0,255)
endif
7.要求:
1.编制一个表单完成数字时钟显示功能;
2.表单将自动以1秒为间隔动态显示系统时间;
3.时、分、秒要求用汉字说明。
Ø设置表单标题为“数字时钟”。
Ø设置文本框Text1的Fontsize属性(将其放大)。
Ø设置文本框的字体为“隶书”。
Ø设置计时器Timer1的Interval属性为1000。
(1)表单Form1的Init事件代码:
避免运行时文本框空白
thisform.text1.value=subs(time(),1,2)+"时"+subs(time(),4,2)+"分"+subs(time(),7,2)+"秒"
(2)计时器Timer1的Timer事件代码:
thisform.text1.value=subs(time(),1,2)+"时"+subs(time(),4,2)+"分"+subs(time(),7,2)+"秒"
8.要求:
编制一个人工翻动日历牌界面,界面窗口中显示当前日期,但是用户可以通过界面提供的微调按钮任意地向前或向后翻动日期。
Ø设置表单标题为“人工翻动日历牌”。
Ø设置文本框Text1的Fontsize属性(将其放大)。
Ø设置文本框的的ReadOnly属性为真。
Ø设置文本框背景和前景色(如设置文字颜色为“白”),大小适当。
(1)表单Form1的Init事件代码:
publicd
setcenturyon
d=date()
y=substr(dtoc(d),7,4)
m=substr(dtoc(d),1,2)
r=substr(dtoc(d),4,2)
thisform.text1.value=y+"年"+m+"月"+r+"日"
(2)微调对象Spinner1的UpClick事件代码:
D=d-1
Y=substr(dtoc(d),7,4)
M=substr(dtoc(d),1,2)
R=substr(dtoc(d),4,2)
thisform.text1.value=y+”年”+m+”月”+r+”日”
(3)微调对象Spinner1的DownClick事件代码:
D=d+1
Y=substr(dtoc(d),7,4)
M=substr(dtoc(d),1,2)
R=substr(dtoc(d),4,2)
thisform.text1.value=y+”年”+m+”月”+r+”日”
9.要求:
1.编制一个日历时钟表单;
2.表单中的日历是当前日期,时钟会动态跳动(每1秒跳一次)。
Ø设置表单标题为“日历时钟表单”。
Ø设置计时器Timer1的Interval属性为1000。
Ø设置文本框的Fontsize属性(将其放大),字体为隶书。
Ø设置文本框的的ReadOnly属性为真。
(1)表单Form1的Init事件代码:
Thisform.text1.value=substr(dtoc(date()),7,4)+"年"+substr(dtoc(date()),1,2)+"月"+substr(dtoc(date()),4,2)+"日"
Thisform.text2.value=time()
(2)计时器控件Timer1的Timer事件代码:
thisform.text1.value=substr(dtoc(date()),7,4)+"年"+substr(dtoc(date()),1,2)+"月"+substr(dtoc(date()),4,2)+"日"
thisform.text2.value=time()
10.要求:
编制一个日历时钟表单,表单中的日历是当前日期、当前星期,时钟会动态跳动(每1秒跳一次)。
Ø设置表单标题为“日历时钟表单”。
Ø
设置计时器Timer1的Interval属性为1000。
Ø设置文本框的Fontsize属性(将其放大),字体为隶书。
(1)表单Form1的Init事件代码:
thisform.text1.value=substr(dtoc(date()),7,4)+;
"年"+substr(dtoc(date()),1,2)+"月"+substr(dtoc(date()),4,2)+"日"
xq="七一二三四五六"
thisform.text2.value="星期"+substr(xq,2*dow(date())-1,2)+"("+cdow(date())+")"
thisform.text3.value=time()
(2)计时器控件Timer1的Timer事件代码:
thisform.text1.value=substr(dtoc(date()),7,4)+"年"+substr(dtoc(date()),1,2)+"月"+substr(dtoc(date()),4,2)+"日"
xq="七一二三四五六"
thisform.text2.value="星期"+substr(xq,2*dow(date())-1,2)+"("+cdow(date())+")"
thisform.text3.value=time()
说明:
Dow()函数用1~7数字表示星期几,1表示星期日、7表示星期六。
cdow()函数返回英文星期值。
11.要求:
1.编制一个表单完成计时器计数显示功能;
2.表单初始显示状态为全零“00:
00:
00”;
3.按“计数”按钮,将自动以秒为单位从零开始计数(设:
时的计数属性名为S,分的计数属性名为F,秒的计数属性名为M)并在表单上动态显示,按“停止”按钮将显示最后一刻的计数时间。
Ø设置表单标题为“计数器”。
(Form1的Caption属性为“计数器”)
Ø设置文本框Text1的Fontsize属性(将其放大)。
Ø设置计时器Timer1的Interval属性为1000。
Ø新建三个属性thisform.s、thisform.f、thisform.m,分别用来保存“时”、“分”、“秒”。
新属性创建方法:
(“表单”——“新建属性”——输入属性名)
(1)表单Form1的Init事件代码:
thisform.timer1.enabled=.f.&&开始时时钟无效
thisform.text1.value="00:
00:
00"&&文本框置0
store0tothisform.s,thisform.f,thisform.m&&分别给时、分、秒赋初值,如果在属性窗口直接赋值,这里就不需要这句了。
(2)命令按钮Command1的Click事件代码:
thisform.timer1.enabled=.t.
thisform.text1.value="00:
00:
00"
store0tothisform.s,thisform.f,thisform.m
(3)命令按钮Command2的Click事件代码:
thisform.timer1.enabled=.f.
(4)计时器Timer1的Timer事件代码:
thisform.m=thisform.m+1
ifthisform.m=60
thisform.m=0
thisform.f=thisform.f+1
ifthisform.f=60
thisform.f=0
thisform.s=thisform.s+1
endif
endif
s=iif(thisform.s>9,str(thisform.s,2),"0"+str(thisform.s,1))
f=iif(thisform.f>9,str(thisform.f,2),"0"+str(thisform.f,1))
m=iif(thisform.m>9,str(thisform.m,2),"0"+str(thisform.m,1))
thisform.text1.value=s+":
"+f+":
"+m
12.要求:
1.模仿VisualFoxPro中的“新建”对话框,编制一个“新建”表单;
2.当用户选了“表”、“表单”或“程序”任意一项后,就可以自动进入“表设计器”或“表单设计器”或程序编辑窗中。
Ø设置表单标题为“新建”。
Ø“文件类型”为一个标签。
OptionGroup1的Click事件代码:
docase
casethis.value=1
create.dbf
casethis.value=2
createform
casethis.value=3
modicomm
endcase
13.要求:
1.编制一个文字水平动态移动操纵的表单;
2.文字信息(纵向)初始的显示位置在表单的左边,表单执行后,每间隔20毫秒,文字会自动以间隔加1的幅度逐步向表单右边移动,直到文字到达表单最右边缘;
3.然后每间隔20毫秒文字会自动以间隔减1的幅度逐步向表单左边移动,直到文字回复到初始位置;
4.整个过程不间断地来回移动。
Ø设置表单标题为“水平移动的文字”。
Ø设置表单背景色为黄色。
Ø设置标签Label1的颜色、字体、字号及BackStyle(背景风格)为透明。
Ø设置标签Label1的WordWrap属性为真(可以换行显示)。
Ø设置时间间隔为20。
(1)表单Form1的Init事件代码:
publict,left1
t=1
left1=thisform.label1.left
(2)控件Timer1的Timer事件代码:
ifthisform.label1.left>thisform.width-thisform.label1.widthorthisform.label1.leftt=-t
endif
thisform.label1.left=thisform.label1.left+t
14.要求:
1.编制一个文字垂直动态移动操纵的表单;
2.文字信息初始的显示位置在表单的正上方,表单执行后,每间隔20毫秒,文字会自动以间隔加1的幅度逐步向表单正下方移动,直到文字到达表单底部;
3.然后每间隔20毫秒,文字会自动以间隔减1的幅度逐步向表单正上方移动,直到文字回复到初始位置;
4.整个过程不间断地来回移动。
Ø设置表单标题为“垂直移动的文字”。
Ø设置表单背景色为黄色。
Ø设置标签Label1的颜色、字体、字号及BackStyle(背景风格)为透明。
Ø设置时间间隔为20。
(1)表单Form1的Init事件代码:
publict,top1
t=1
top1=thisform.label1.top
(2)控件Timer1的Timer事件代码:
ifthisform.label1.top>thisform.height-thisform.label1.heightorthisform.label1.topt=-t
endif
thisform.label1.top=thisform.label1.top+t
15.要求:
1.编制一个文字动态缩放操纵的表单;
2.文字信息初始的显示位置在表单的正中央,表单执行后,每间隔20毫秒,文字会自动以字号加1的幅度逐步向周遍延伸变大,直到文字充满整个表单;
3.然后每间隔20毫秒文字会自动以字号减1的幅度逐步向中央回缩变小,直到文字复原为初始的状态;
4.整个过程不间断地缩放(最小字号为:
4,最大字号为:
52)。
Ø设置表单标题为“缩放文字”,设置表单背景色为黄色。
Ø设置标签Label1的颜色、字体、字号及BackStyle(背景风格)为透明。
自动大小属性AutoSize为真,对齐方式属性Alignment=2-中央。
Ø设置计时器时间间隔Interval为20。
(1)表单Form1的Init事件代码:
publict
t=1
thisform.label1.fontsize=4
(2)控件Timer1的Timer事件代码:
thisform.label1.fontsize=thisform.label1.fontsize+t
ifthisform.label1.fontsize=4.or.thisform.label1.fontsize=52
t=-t
endif
16.要求:
1.设计一个表单,接受用户输入的数字,生成相应的矩阵;
2.文本框内输入一个小于等于10的数字,生成一个相应的对称矩阵,且这个距阵的对角线的数字全部为0,其他的数字为1。
Ø设置标签Label1的WordWrap属性为真(可以换行显示)。
Ø设置编辑框Edit1的ReadOnly属性为真(只读)
命令按钮Command1的Click事件代码:
n=val(thisform.text1.value)&&定义变量n,并赋值为文本框当前值.
dimes(n,n)&&定义数组
c=""&&定义空串
fori=1ton
forj=1ton
ifi=jori+j=n+1
s(i,j)='0'
else
s(i,j)='1'
endif
c=c+""+s(i,j)
endfor
c=c+chr(13)&&chr(13)回车换行
endfor
thisform.edit1.value=c&&在编辑框内显示字符c
thisform.text1.setfocus&&为文本框设置焦点
17.要求:
1.在表单中的三个文本框中分别输入3个数,判别是否能形成三角形,如果是三角形,求出此三角形的面积。
2.判断是否是三角形,可利用:
a+b>c,且c>0;a+c>b,且b>0;b+c>a,且a>0判断。
Ø设置按钮标题为“判断计算”。
Ø设置标签Label1字号、自动大小属性AutoSize为真,Label2自动大小属性AutoSize为真。
(1)表单Form1的Init事件代码:
this.label2.visible=.f.
(2)命令按钮Command1的Click事件代码:
a=val(thisform.text1.value)
b=val(thisform.text2.value)
c=val(thisform.text3.value)
p=(a+b+c)/2
thisform.label2.visible=.t.
if(a+b>candc>0)and(a+c>bandb>0)and(b+c>aanda>0)
s=sqrt(p*(p-a)*(p-b)*(p-c))
thisform.label2.caption="能构成三角形,面积等于:
"+ltrim(str(s))
else
thisform.label2.caption="不能构成三角形!
"
endif
18.要求:
在文本框中输入一个起始数,在编辑框中显示20个从起始位置开始并且是3的倍数的整数,且这20个数字的个位数都是3,利用标签输出这20个数的和。
Ø设置按钮标题为“统计”。
Ø
设置标签Label1、Label2自动大小属性AutoSize为真。
Ø设置编辑框的只读属性ReadOnly为真。
(1)Form1的Init事件代码:
this.label2.visible=.f.
this.text1.setfocus
(2)控件Command1的Click事件代码:
c=""&&赋空串
s=0&&累加和赋初值
n=0&&计数器赋初值
a=val(alltr(thisform.text1.value))&&文本框当前值
dowhil.t.
ifn=20
exit
endif
ifa%3=0anda%10=3
c=c+allt(str(a))+chr(13)
n=n+1
s=s+a
endif
a=a+1
enddo
thisform.edit1.value=c
thisform.label2.visible=.t.
thisform.label2.caption="这组数字的和="+allt(str(s))
thisform.text1.setfocus
19.要求:
1.编制一个小型文本编辑器,其功能布局见design.jpg;
2.文字信息从键盘输入至Edit框;
3.三个单选按钮分别用于设置“宋体”、“黑体”和“隶书”;
4.三个Check按钮用设置字体的“倾斜”、“加粗”和“下划线”;
5.字号用微调控件实现。
Ø设置表单标题为“自制文本编辑器”。
Ø设置标签Label1自动大小属性AutoSize为真,并改变其字号及颜色。
Ø设置标签Label2的Caption属性为“字号”。
Ø设置选项组按钮和复选框的标题大小。
Ø设置微调控件Spinner1的SpinnerHighV