资源描述
实验十 表单设计
一、 实验目的
1. 熟悉表单设计器的使用。
2. 掌握表单设计的基本过程和方法。
3. 掌握表单的常用属性,方法和事件。
4. 掌握标签、编辑框、命令按钮、组合框、列表框、表格、等常用控件的使用。
二、实验内容和步骤
1.建立一个如下图所示表单:
图1 学生登录窗口
要求实现:
(1)系统初次载入时,不显示文字“学生成绩登录系统”,单击窗体右键时,显示文字“学生成绩登录系统”。
(2)单击“登录”按钮时,用户名所对应的文本框的背景色为红色。
(3)单击“退出”按钮时,密码所对应的文本框消失。
(4)双击窗体时,两文本框恢复正常。
设计步骤:
① 选择“文件/表单/新建文件”,打开表单设计器。
② 在表单上添加三个标签(Label1、Label2、Label3)、两个文本框(Text1、Text2)和一个命令按纽(Command1)。
③ 设置表单、控件属性如下表所示。
表1 属性设置
对 象
属 性
属 性 值
Form1
Caption
系统登录
Command1
Caption
登录
Command1
Caption
退出
Label1
Caption
学生成绩登录系统
Fontsize
20
Forecolor
255,0,0
Label2
Caption
用户名:
Label3
Caption
密码:
Text1
InputMask
xxxx
Text2
InputMask
xxx
PasswordChar
*
④ 编写相应事件过程代码。
l 表单Form1的Init事件过程代码:
ThisForm.label1.visible=.F.
l 表单Form1的Rightclick事件过程代码:
ThisForm.label1.visible=.T.
l 命令按钮Command1的Click事件过程代码:
Thisform.text1.backcolor=RGB(255,0,0)
l 命令按钮Command2的Click事件过程代码:
Thisform.Text2.visible=.F.
l 表单Form1的dblclick事件过程代码:
Thisform.text1.backcolor=rgb(255,255,255)
Thisform.text2.visible=.T.
⑤ 保存表单,命名为“表单01”。
⑥ 运行该表单,验证是否达到要求。
2.设计一个登录表单,当用户输入用户名和口令并按确认键后,检验其输入是否正确,若正确(假定用户名为“USER”,口令为“123”),就显示“欢迎使用”字样并关闭表单;若不正确,显示“用户名或口令不对,请重输…”字样(要求口令输入时显示星号*),连续三次都输入不正确,显示“输入次数超过三次,你无权使用本系统”。
图2 用户登录界面
设计步骤:
① 新建一表单,在表单上添加两个标签、两个文本框、一个命令按纽。
② 设置两个标签和一个命令按纽的Caption属性如上图所示。设置文本框Text1、Text2的InputMask属性值分别为xxxx和xxx;设置Text2的PasswordChar属性值为*。
③ 编写相应对象的相应事件过程代码。
l 表单Form1的Load事件代码:
public num
num=0
l 命令按钮Command1的Click事件代码:
if upper(thisform.text1.value)="USER".and.;
thisform.text2.value="123"
wait "欢迎登录" window at 25,80
thisform.release
else
num=num+1
if num<3
thisform.text1.value=""
thisform.text2.value=""
thisform.text1.setfocus
else
messagebox("输入次数超过三次,你无权使用本系统",48,"提示")
thisform.release
endif
endif
④ 保存表单,命名为“表单02”,运行表单。
3.设计一个选项按钮组表单,能改变文本框内文字的字体格式,如下图所示。
图3 字体设置界面
设计步骤:
① 新建一表单,在表单上添加一个文本框Text1和一个选项按钮OptionGroup1。
② 设置文本框Text1的Value属性为“设置字体格式”,Fontsize属性为20,选项按纽OptionGroup1的ButtonCount属性为4、Caption属性如上图所示。
③ 编写选项按钮OptionGroup1的Click事件过程代码:
④ 保存表单,命名为“表单03”,运行表单。
4.设计一个运行结果如下图所示的表单,可用命令按钮组中命令按钮来调整标签控件的位置及大小。
图5 命令按钮组的使用界面
设计步骤:
① 新建一表单,在表单上添加一个标签label1和一个命令按钮组CommandGroup1。
② 设置标签label1和命令按钮组CommandGroup1的属性如上图所示。
③ 编写命令按钮组的Click事件过程代码:
④ 保存表单,命名为“表单04”,运行表单。
5.编制一个浏览记录的表单(浏览记录.scx),要求具有前后翻页、插入记录、删除当前记录的功能,并能对当前记录进行编辑修改(其中“性别”字段的内容可用单选按钮组控件来控制)。运行结果如下:
图7 浏览记录窗口
设计步骤:
① 新建一表单,将学生情况表(xsqk.dbf)添加到数据环境中。
② 用鼠标将有关字段逐个拖到表单中的合适位置形成相应的标签、文本框、复选框、OLE帮定对象及编辑控件。
③ 添加一个单选按钮组控件“optiongroup1”取代原来的“txt性别”文本框,并设置其buttoncount属性为2,controlsource 属性为xsqk.性别,将其中的option1的caption属性设置为“男”,option2的caption属性设置为“女”。
④ 设置OLE照片控件的stretch属性为“1--等比填充”。
⑤ 在表单中添加6个命令按钮控件commond1~command6,并将它们的caption属性分别设置为:“首记录”、“上一个记录”、“下一个记录”、“尾记录”、“添加记录”、“删除记录”。
⑥ 编写相应事件过程代码。
l 表单对象的init事件过程代码:
set deleted on
select xsqk
go top
mand1.enabled=.f.
mand2.enabled=.f.
l “首记录”Command1按钮的click事件过程代码:
go top
mand3.enabled=.t.
mand4.enabled=.t.
mand2.enabled=.f.
this.enabled=.f.
thisform.refresh
l “上一个记录”Command2按钮的click事件过程代码:
mand3.enabled=.t.
mand4.enabled=.t.
skip -1
if bof()
go top
mand1.enabled=.f.
this.enabled=.f.
endif
thisform.refresh
l “下一个记录”Command3按钮的click事件过程代码:
mand1.enabled=.t.
mand2.enabled=.t.
skip
if eof()
go bottom
mand4.enabled=.f.
this.enabled=.f.
endif
thisform.refresh
l “尾记录”Command4按钮的click事件过程代码:
go bottom
mand1.enabled=.t.
mand2.enabled=.t.
mand3.enabled=.f.
this.enabled=.f.
thisform.refresh
l “添加记录”Command5按钮的click事件过程代码:
append blank
thisform.txt学号.setfocus
thisform.refresh
l “删除当前记录”Command6按钮的click事件过程代码:
ts=messagebox("确实要删除此记录吗?",4+48)
if ts=6
delete
skip -1
if bof()
go top
endif
thisform.refresh
endif
⑦ 保存表单,命名为“表单05”,运行表单。
6.利用学生管理数据库中的xsqk表和cj表,设计一个能进行查询统计的表单,其界面如下图所示。当输入一个学生姓名并单击“查询统计”按钮时,会在右侧表格内显示该同学所选的各门课程的成绩,并在左边相应的文本框内显示其中的最高分、最低分和平均分,单击“退出”按钮将关闭表单。
图8 成绩查询窗口
表单设计步骤如下:
① 新建一表单,打开数据环境设计器窗口,添加表xsqk和cj。
② 在表单上添加四个个标签、四个文本框、两个命令按钮和一个表格控件,设置标签、命令按钮和表单的属性如上图所示。
③ 设置表格的ColumnCount属性值为2、RecordsourceType属性值为“4—SQL说明”。
④ 设置表格两列标头的Caption属性分别为“课程号”和“成绩”,并适当调整两列的宽度。
⑤ 编写相应事件过程代码。
l 表单对象的init事件过程代码:
this.grid1.visible=.f.
l “查询统计”命令按钮Command1的Click事件过程代码:
thisform.Grid1.Recordsource="select 课程号,成绩 ;
from cj,xsqk where cj.学号=xsqk.学号 and ;
姓名=alltrim(thisform.text1.value) into cursor lsb"
thisform.grid1.visible=.t.
select max(成绩) as maxcj,min(成绩) as mincj, ;
avg(成绩) as avgcj from lsb into cursor lsb1
thisform.text2.value=maxcj
thisform.text3.value=mincj
thisform.text4.value=avgcj
l “退出”命令按钮Command2的Click事件过程代码:
thisform.release
⑥ 保存表单,命名为“表单06”,运行表单。
展开阅读全文