资源描述
14
表单设计题
在考生目录的paper子目录中有界面文件Design.jpg和表单设计年涉及的表文件。
请设计程序,编制表单,在Paper子目录中生成Design.scx文件。
注意:以默认方式命名控件,以从左至右,从上向下的顺序拖放控件。
1.要求:
(1)编制一个表单完成表文件“学生.dbf”内容的只读浏览显示功能;
(2)表单初始显示内容为表文件“学生.dbf”内容的首记录;
(3)表单内容将以10秒为间隔自动刷新,即自动向后翻记录,当翻至表底时,瘵自动回到首记录循环翻动。
1 2
² 表单的Form1的Init事件代码:
THIS.SETALL("READONLY",.T.,"TEXTBOX")
GO TOP
THISFORM.REFRESH
² 时钟控件Timer1的Timer事件代码:
SKIP
IF EOF()
GO TOP
ENDIF
THISFORM.REFRESH
2.要求:
(1)编制一个表单完成表文件“学生.dbf“内容的只读浏览显示功能
(2)表单初始显示内容为表文件“学生.dbf”的首记录
(3)当按“前翻”、“后翻”、“首记录”、“末记录”按钮时,表单将自动显示相应记录的内容
(4)当翻至表头或表底时,将自动设置相应按钮不可访问。
² 表单的Form1的Init事件代码:
THIS.SETALL("READONLY",.T.,"TEXTBOX")
Sele 学生
GO TOP
THISFORM.REFRESH
² “首记录”按钮Command1的Click事件代码:
go top
mand2.enabled=.t.
mand3.enabled=.t.
mand4.enabled=.t.
mand1.enabled=.f.
thisform.refresh
² “前翻”按钮Command2的Click事件代码:
skip -1
if bof()
mand1.enabled=.f.
this.enabled=.f.
endif
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
² “后翻”按钮Command3的Click事件代码:
skip
if eof()
mand3.enabled=.f.
mand4.enabled=.f.
endif
mand1.enabled=.t.
mand2.enabled=.t.
thisform.refresh
² “末记录”按钮Command4的Click事件代码:
go bottom
mand1.enabled=.t.
mand2.enabled=.t.
mand3.enabled=.t.
mand4.enabled=.f.
thisform.refresh
3.要求:(1)编制“学生“表信息查询界面
(2)查询与用户指定的学生姓名相匹配的记录,并显示指定学生的所有信息。
² List1的Rowsourcetype为“6-字段”,Rowsource为“学生.姓名”;文本框Text1~Text5的数据源属性分别为学生表中对应字段
² 表单的Form1的Init事件代码:
use 学生
thisform.setall("visible",.f.,"textbox")
thisform.setall("visible",.f.,"label")
thisform.label1.visible=.t.
thisform.refresh
² 列表框List1的Interactivechange事件代码:
thisform.setall("visible",.t.)
thisform.refresh
4.要求:(1)编制“学生表”信息查询界面 (2)显示指定学生的所有信息。
² Combo1的Rowsourcetype为“6-字段”,Rowsource为“学生.姓名”;文本框Text1~Text5的数据源属性分别为学生表中对应字段
² 所有文本框Text的ReadOnly属性为“.T.”;
² 表单的Form1的Init事件代码:
thisform.setall("visible",.f.,"textbox")
thisform.setall("visible",.f.,"label")
thisform.label1.visible=.t.
thisform.refresh
² 组合框Combo1的Interactivechange事件代码:
thisform.setall("visible",.t.)
thisform.refresh
5.要求:编制“学生”表信息查询界面,查询与用户输入的学生学号相匹配的记录,并显示指定学生的所有信息。
² Label3、Label4、Label5、Label6的Caption属性分别设置为“姓名:”、“性别:”、“出生年月:”、“奖学金:”,并设置所有文本框的数据源属性为学生表中的对应字段
² 标签Label2的Forecolor属性为“255,255,255”
² 表单的Form1的Init事件代码:
thisform.setall("visible",.f.)
thisform.label1.visible=.t.
thisform.text1.visible=.t.
² 文本框Text1的Valid事件代码:
loca for alltrim(学号)=alltrim(this.value)
if found()
thisform.label2.caption=""
thisform.setall("visible",.t.)
else
thisform.setall("visible",.f.)
thisform.label1.visible=.t.
thisform.text1.visible=.t.
thisform.label2.visible=.t.
thisform.label2.caption="您所指定的学生并不存在!"
endif
thisform.refresh
6.要求:
(1)编制一个表单完成表文件“学生.dbf”、“成绩.dbf”、“课程.dbf”内容的编辑浏览显示功能
(2)三个表文件分别显示在三个不同的页面上(3)未被激活的页面自动设为不可访问
² Timer1的Interval属性设置为10000
² Timer1的Timer事件的代码:
P=Thisform.PageFrame1.ActivePage
P=P+1
IF P>3
P=1
ENDIF
Thisform.PageFrame1.SetAll("Enabled",.F.,"Page")
Thisform.PageFrame1.Pages(P).Enabled=.T.
Thisform.PageFrame1.ActivePage=P
7.要求:
(1)编制一个界面程序,实现将用户指定的表文件的字段名列表显示
(2)系统自动查询用户指定的表文件是否存在,存在则列表显示指定表文件的所有字段名信息,否则给出信息提示框
² Form1的Init事件的代码:
Thisform.label2.visible=.f.
Thisform.list1.visible=.f.
² Text1的Valid事件的代码
fn=alltrim(this.value)+ ".dbf"
if file(fn)
thisform.setall("visible",.t.)
thisform.list1.clear
use (fn)
for i=1 to fcount()
thisform.list1.additem(fields(i))
endfor
else
Thisform.label2.visible=.f.
Thisform.list1.visible=.f.
messagebox("指定的表文件不存在!", 64, "表文件存在判断")
endif
thisform.refresh
8.要求:
(1)编制一个表单完成表文件“学生.dbf”内容的查询显示功能
(2)当用户在组合框(下拉列表)选择班级(学号的左三位)后,表单将自动显示对应班级的奖学金总额
(3)按“退出”按钮时,自动关闭表单。
8 9
² 表单Form1的Init事件代码:
set talk off
sele 学生
index on left(学号,3) to xh unique
scan
bo1.additem(left(学号,3))
endscan
set index to
² 组合框Combo1的Valid事件代码:
Sum 奖学金 to jxj for left(学号,3)=this.value
Thisform.twxt1.value=jsj
² “退出”按钮Command1的Click事件代码:
thisform.release
9.要求:
(1)编制一个表单完成表文件“学生.dbf”“成绩.dbf”内容的查询显示功能
(2)当用户在组合框(下拉列表)选择班级(学号的左三位)后,表单将自动显示对应班级的所有学生的总平均成绩
(3)按“退出”按钮时,自动关闭表单。
² 表单Form1的Init事件代码:
Set talk off
Select 学生
index on left(学号,3) to xh unique
scan
bo1.additem(left(学号,3))
endscan
set index to
² 组合框combo1的Valid事件代码:
select 成绩
average成绩 to cj for left(学号,3)=this.displayvalue
thisform.text1.value=cj
² “退出”按钮Command1的Click事件代码:
thisform.release
10.要求:
(1)编制一个表单完成表文件“课程.dbf”“成绩.dbf”内容的查询显示功能
(2)当用户在组合框选择课程名后,表单将自动显示对应课程的所有学生的总平均成绩
(3)按“退出”按钮时,自动关闭表单。
² 组合框Combo1的RowSouceType属性为“6-字段”,RowSouce属性为“课程.课程名”。
² 组合框Combo1的Valid事件代码:
set talk off
select 课程
kch=课程号
select 成绩
average 成绩 to cj for 课程号=kch
thisform.text1.value=cj
² “退出”按钮Command1的Click事件代码:
thisform.release
11.要求:
(1)编制一个表单完成表文件“学生.dbf”“成绩.dbf”内容的查询显示功能
(2)当用户在组合框(下拉列表)选择姓名后,表单将自动显示对应学生的平均成绩
(3)按“退出”按钮时,自动关闭表单。
² 组合框Combo1的RowSouceType属性为“6-字段”,RowSouce属性为“学生.姓名”。
² 组合框Combo1的Interactivepage事件代码:
set talk off
select 学生
xh=学号
select 成绩
average 成绩 to cj for 学号=xh
thisform.text1.value=cj
² “退出”按钮Command1的Click事件代码:
thisform.release
12.要求:编制一个人工翻动日历牌,界面窗口中显示当前日期,但是可以通过界面提供的微调按钮任意地向前或向后翻动日期。
² Text1的dateformat属性设为“14-汉语”
² 微调Spinner1的Downclick事件代码:
thisform.text1.value=thisform.text1.value-1
thisform.refresh
² 微调Spnnier1的Upclick事件代码:
thisform.text1.value=thisform.text1.value+1
thisform.refresh
13.要求(1)设计一个表单,接受用户输入的数字,生成相应的矩阵
(2)文本框内输入一个小于等于10的数字,生成一个相应的对称矩阵,且这个矩阵的对角线的数字全部为0,其他的数字为1。
² “显示”按钮Command1的click事件的代码:
n=val(thisform.text1.value)
s=""
for i=1 to n
for j=1 to n
if j=i or j+i=n+1
s=s+"0"+space(1)
else
s=s+"1"+space(1)
endif
endfor
s=s+chr(13)
endfor
thisform.edit1.value=s
thisform.refresh
14.要求:
(1)编制一个按钮组调色板
(2)当用户按了命令按钮组中的某个按钮后,表单的背景色就会变为按钮指定的对应颜色。
² 命令按钮组Commandgroup1的Click事件代码:
do case
case this.value=1
thisform.backcolor=rgb(225,0,0)
case this.value=2
thisform.backcolor=rgb(0,255,0)
case this.value=3
thisform.backcolor=rgb(0,0,255)
case this.value=4
thisform.backcolor=rgb(0,0,0)
case this.value=5
thisform.backcolor=rgb(225,255,255)
endcase
thisform.refresh
15.要求:
(1)编制一个按钮组调色板
(2)当用户按了命令按钮组中的某个按钮后,命令按钮组的背景色就会变为按钮指定的对应颜色。
² 命令按钮组Commandgroup1的Click事件代码:
do case
case this.value=1
this.backcolor=rgb(225,0,0)
case this.value=2
this.backcolor=rgb(0,255,0)
case this.value=3
this.backcolor=rgb(0,0,255)
case this.value=4
this.backcolor=rgb(0,0,0)
case this.value=5
this.backcolor=rgb(225,255,255)
endcase
thisform.refresh
16.要求:
(1)编制一个选项按钮组调色板
(2)当用户按了某个选项按钮后,表单的背景颜色就会变为按钮指定的对应颜色。
² 选项按钮组Optiongroup1的Click事件代码:
do case
case this.value=1
thisform.backcolor=rgb(255,0,0)
case this.value=2
thisform.backcolor=rgb(0,255,0)
case this.value=3
thisform. backcolor=rgb(0,0,255)
case this.value=4
thisform.backcolor=rgb(0,0,0)
case this.value=5
thisform.backcolor=rgb(255,255,255)
endcase
17.要求:
(1)编制一个“选页调色板”表单
(2) 当用户按了某页后,页框的背景色就会变成指定的对应颜色。
² 选项按钮组Pageframe1的Click事件代码:
do case
case this.activepage=1
this.page1.backcolor=rgb(255,0,0)
case this.activepage=2
this.page2.backcolor=rgb(0,255,0)
case this.activepage=3
this.page3.backcolor=rgb(0,0,255)
case this.activepage=4
this.page4.backcolor=rgb(0,0,0)
case this.activepage=5
this.page5.backcolor=rgb(255,255,255)
endcase
thisform.refresh
18.要求:
(1)编制一个信息显示(时钟)的界面,显示当前时间(每秒动态显示跳动一次)
(2)并将表单的背景颜色设置为蓝、绿色自动变换(与时间同步切换)
² Timer1的Timer事件代码:
s=substr(time(),1,2)
f=substr(time(),4,2)
m=substr(time(),7,2)
mn=val(m)
if int(mn/2)=mn/2
thisform.backcolor=rgb(0,0,255)
else
thisform.backcolor=rgb(0,255,0)
endif
thisform.text1.value=time()
19.要求:
(1)编制一个表单完成数字时钟显示功能
(2)表单将自动以1秒为间隔动态显示系统时间
(3)时、分、秒要求用汉字说明
² 文本框Text1的背景色Backcolor为RGB(255,255,255);FONTNAME为“隶书”。
² 时钟控件Timer1的Timer事件代码:
s=substr(time(),1,2)
f=substr(time(),4,2)
m=substr(time(),7,2)
thisform.text1.value=s+"时"+f+'分'+m+'秒'
thisform.refresh
20.要求:
(1)编制一个表单完成计时器计数显示功能
(2)表单初始显示状态为全零“00:00:00”
(3)按“计数”按钮,将自动以秒为单位从零开始计数(设:时的计数属性名为S,分的计数属性名为F,秒的计数属性名为M。)并在表单上动态显示。按“停止”按钮将显示最后一刻的计数时间。
² 创建1个新建属性,clocknum初值设为0
² 表单的form1的init事件代码:
thisform.timer1.enabled=.f.
thisform.text1.value="00:00:00"
thisform.refresh
² “计数”按钮command1的click事件代码:
thisform.timer1.enabled=.t.
² “停止”按钮command2的click事件代码:
thisform.timer1.enabled=.f.
² 时钟控件timer1的timer事件代码:
js=thisform.clocknum
s=int(js/3600)
f=int(js/60)
m=js%60
s1=iif(s<10,'0'+str(s,1),str(s,2))
f1=iif(f<10,'0'+str(f,1),str(f,2))
m1=iif(m<10,'0'+str(m,1),str(m,2))
thisform.text1.value=s1+":"+f1+":"+m1
thisform.clocknum=thisform.clocknum+1
thisform.refresh
21.要求:
(1)“日期”“星期”“时钟”标签上的文本能自动换行,自动调整大小,背景透明;
(2)时钟每1秒种跳一次
21 22
² 时钟控件Timer1的Timer事件代码:
y=str(year(date()),4)
m=str(month(date()),2)
d=str(day(date()),2)
thisform.text1.value=y+"年"+m+"月"+d+"日"
c="日一二三四五六"
n=dow(date())
w="星期"+substr(c,2*n-1,2)+"("+cdow(date())+")"
thisform.text2.value=w
thisform.text3.value=time()
22.要求:
(1)编制一个表单完成文字水平动态移动操纵的表单;
(2)文字信息(纵向)初始显示位置在表单的左边,表单执行后,每间隔20毫秒,文字会自动以间隔加1的幅度逐步向表单右边移动,直到文字到达表单最右边缘;
(3)然后,每间隔20毫秒文字会自动以间隔加1的幅度逐步向表单左边移动,直到文字回复到初始位置;(4)整个过程不间断地来回移动
² 新建表单属性:right
² 表单的Form1的Init事件代码:
thisform.timer1.interval=20
² 时钟控件Timer1的Timer事件代码:
IF thisform.label1.Left=0
thisform.right=.f.
endif
if thisform.label1.left+thisform.label1.width=thisform.width
thisform.right=.t.
ENDIF
IF thisform.right
thisform.label1.Left=thisform.label1.Left-1
ELSE
thisform.label1.Left=thisform.label1.Left+1
ENDIF
thisform.refresh
23.要求:
(1)编制一个表单完成文字动态缩放操纵的表单;
(2)文字信息初始的位置在表单的正中央,表单执行后,第间隔20毫秒,文字自动以字号加1的幅度逐步向周边延伸变大,直到文字充满整个表单;
(3)然后每间隔20毫秒,文字会自动以字号加1的幅度逐步向中lkd回缩变小,直到文字复原为初始的状态;
(4)整个过程不间断地缩放(最小字号为4,最大学号为52)
.
² 新建表单属性change
² 表单的Form1的Init事件代码:
thisform.change=0
² 时钟控件Timer1的Timer事件代码:
if thisform.label1.fontsize=52
thisform.change=1
endif
if thisform.label1.fontsize=4
thisform.change=0
endif
if thisform.change=0
thisform.label1.fontsize=thisform.label1.fontsize+1
else
thisform.label1.fontsize=thisform.label1.fontsize-1
endif
thisform.refresh
24.建立一个如图所示的表单
² 选项按钮组Optiongroup1的Click事件代码:
do case
case this.value=1
create
case this.value=2
create form
case this.value=3
modify command
endcase
25.编制一个表单完成数据转移操作功能
² 命令按钮“添加一项”command1的click事件代码:
thisform.list2.additem(thisform.list1.value)
thisform.list1.removeitem(thisform.list1.listindex)
thisform.refresh
² 命令按钮“全部添加”command2的click事件代码:
thisform.list1.clear
thisform.list2.clear
scan
thisform.list2.additem(姓名)
endscan
thisform.refresh
² 命令按钮“移去一项”command3的click事件:
thisform.list1.additem(thisform.list2.value)
thisform.list2.removeitem(thisform.list2.listindex)
thisform.refresh
² 命令按钮“全部移去”command4 的click事件:
thisform.list2.clear
thisform.list1.clear
scan
thisform.list1.additem(姓名)
endscan
thisform.refresh
14
展开阅读全文