十五章表单设计(二)
一、选项按钮组应用
建立表单,使得单击选项按钮组可以选择字体,控制“字体演示示例”标签文字的字体格式。
(1)将表单的基本对象进行相应的设置
(2)填写Optiongroup1的Click事件代码
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
THISFORM.LABEL1.FONTNAME="宋体"
CASE THISFORM.OPTIONGROUP1.VALUE=2
THISFORM.LABEL1.FONTNAME="黑体"
CASE THISFORM.OPTIONGROUP1.VALUE=3
THISFORM.LABEL1.FONTNAME="隶书"
CASE THISFORM.OPTIONGROUP1.VALUE=4
THISFORM.LABEL1.FONTNAME="华文彩云"
ENDCASE
THISFORM.REFRESH
运行结果为:
二、复选框应用
复选框与选项按钮组不同,往往允许从多个选项中同时选择多个或者一个都不选,被选中的选项前会出现一个“√”号,控制标签中的文字显示。
建立表单,使得勾选复选框可以选择不同的字体样式,控制“数据库程序设计”标签文字的字体格式。
(1)将表单的基本对象进行相应的设置
(2)填写复选框(Check1)的Click事件代码:
IF THIS.VALUE=1
THIS.PARENT.LABEL1.FONTITALIC=.T.
ELSE
THIS.PARENT.LABEL1.FONTITALIC=.F.
ENDIF
(3)以此类推完成其他复选框的代码:
IF THIS.VALUE=1
THIS.PARENT.LABEL1.FONTBOLD=.T.
ELSE
THIS.PARENT.LABEL1.FONTBOLD=.F.
ENDIF
IF THIS.VALUE=1
THIS.PARENT.LABEL1.FONTUNDERLINE=.T.
ELSE
THIS.PARENT.LABEL1.FONTUNDERLINE=.F.
ENDIF
运行结果为:
三、表格控件的应用
表格控件是一种容器对象,其外形与“浏览”窗口相似,按行和列的形式显示、编辑数据记录。
设计带有表格控件的表单,根据所选定专业实现对“STUDENT”表中学生基本信息的查询。
①首先在“表单设计器”窗口中,建立表单
②然后,在“属性”窗口完成表单上各个对象属性的设计
③最后,用鼠标双击选项按钮组Optiongroup1控件,打开代码编辑窗口,输入选项按钮组Optiongroup1的Click事件代码:
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
THISFORM.GRID1.RECORDSOURCE=;
"SELECT * FROM STUDENT.DBF WHERE STUDENT.专业='国际贸易' INTO CURSOR TEMP"
CASE THISFORM.OPTIONGROUP1.VALUE=2
THISFORM.GRID1.RECORDSOURCE=;
"SELECT * FROM STUDENT.DBF WHERE STUDENT.专业='应用数学' INTO CURSOR TEMP"
CASE THISFORM.OPTIONGROUP1.VALUE=3
THISFORM.GRID1.RECORDSOURCE=;
"SELECT * FROM STUDENT.DBF WHERE STUDENT.专业='英语' INTO CURSOR TEMP"
CASE THISFORM.OPTIONGROUP1.VALUE=4
THISFORM.GRID1.RECORDSOURCE=;
"SELECT * FROM STUDENT.DBF WHERE STUDENT.专业='应用化学' INTO CURSOR TEMP"
ENDCASE
THISFORM.REFRESH
运行结果为:
四、页框控件的应用
设计表单时,若一个表单中需要处理的问题比较多,则可以将问题划分为多个子问题,每个子问题放在一个页面中,多个页面放到页框控件中。
设计表单,将员工的“基本信息查询”与“工资信息查询”分布在不同的页面中实现。
①启动“表单设计器”窗口,创建一个新表单,向表单中添加一个用于显示“员工信息查询”文字的标签控件对象
②单击“表单控件”工具栏中的“页框”按钮,在表单窗口的适当位置上单击,向表单中添加一个包含两个页面的页框控件对象并调整其大小。用鼠标右键单击页框控件,从弹出的快捷菜单中选择“编辑”命令。
③单击页框中的第一个页面(Page1),设置其Caption属性为“基本信息查询”;在Page1页面中添加相应的标签及选项按钮组Optiongroup1,将选项按钮组的ButtonCount属性设置为2,并依次设置各个选项按钮的Caption属性;仍然在Page1页面中添加两个文本框Text1和Text2,并设置Text1和Text2的Enable属性分别为.T.和.F.;鼠标单击“表格”控件工具按钮,在Page1中添加一个表格控件对象Grid1,并设置其RecordSourceType属性为4-SQL说明,指定表格的数据源是SELECT查询结果,ReadOnly属性为.T.,设置表格控件中的数据为只读。
④单击选择页框中的第二个页面(Page2),设置其Caption属性为“工资信息查询”,然后在其中添加一个标签、文本框Text1和一个表格控件Grid1,表格控件Grid1的RecordSourceType属性为4-SQL说明、ReadOnly属性为.T.
⑤最后,分别编写Page1和Page2页面的事件过程代码:
- THISFORM.PAGEFRAME1.PAGE1的ACTIVATE事件(激活)代码:
THIS.GRID1.RECORDSOURCE=""&&清空表格
- THISFORM.PAGEFRAME1.PAGE1.OPTIONGROUP1的INTERACTIVECHANGE事件(鼠标单击时产生)代码:
DO CASE
CASE THIS.OPTION1.VALUE=1
THISFORM.PAGEFRAME1.PAGE1.TEXT1.ENABLED=.T.
THISFORM.PAGEFRAME1.PAGE1.TEXT2.SETFOCUS
THISFORM.PAGEFRAME1.PAGE1.TEXT2.ENABLED=.F.
CASE THIS.OPTION2.VALUE=1
THISFORM.PAGEFRAME1.PAGE1.TEXT1.ENABLED=.F.
THISFORM.PAGEFRAME1.PAGE1.TEXT2.ENABLED=.T.
THISFORM.PAGEFRAME1.PAGE1.TEXT2.SETFOCUS
ENDCASE
- THISFORM.PAGEFRAME1.PAGE1.TEXT1的INTERACTIVECHANGE事件(用键盘改变其值时产生)代码:
THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCE=""
THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCE=;
"SELECT * FROM 员工 WHERE ALLTRIM(员工.部门代码)=;
THISFORM.PAGEFRAME1.PAGE1.TEXT1.VALUE;
INTO CURSOR TEMP"&&控制表格控件的数据源
- THISFORM.PAGEFRAME1.PAGE1.TEXT2的INTERACTIVECHANGE事件代码:
THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCE=""
THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCE=;
"SELECT * FROM 员工 WHERE ALLTRIM(员工.编号)=;
THISFORM.PAGEFRAME1.PAGE1.TEXT2.VALUE;
INTO CURSOR TEMP"&&控制表格控件的数据源
- THISFORM.PAGEFRAME2.PAGE1的ACTIVATE事件(激活)代码:
THIS.GRID1.RECORDSOURCE=""&&清空表格
- THISFORM.PAGEFRAME1.PAGE2.TEXT1的INTERACTIVECHANGE事件代码:
THISFORM.PAGEFRAME1.PAGE2.GRID1.RECORDSOURCE=""
THISFORM.PAGEFRAME1.PAGE2.GRID1.RECORDSOURCE=;
"SELECT * FROM 工资 WHERE ALLTRIM(工资.编号)=;
THISFORM.PAGEFRAME1.PAGE2.TEXT1.VALUE;
INTO CURSOR TEMP"&&控制表格控件的数据源
运行结果为:
(一个不明所以的说明:上面的代码不断句可以正常运行,断句首位空一格,按上面那种写法是运行不了的ORZ)
思考与练习
1.利用微调框控件,设计简易计算器表单。
(1)这里需要注意的是,在设置Spinner控件的Increment为0.1时,还需要将InputMask设置为9.9(9占位表示小数点前后分别有几位)
(2)选项按钮组的Click事件代码为:
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
THISFORM.TEXT1.VALUE=THISFORM.SPINNER1.VALUE+THISFORM.SPINNER2.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=2
THISFORM.TEXT1.VALUE=THISFORM.SPINNER1.VALUE-THISFORM.SPINNER2.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=3
THISFORM.TEXT1.VALUE=THISFORM.SPINNER1.VALUE*THISFORM.SPINNER2.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=4
THISFORM.TEXT1.VALUE=THISFORM.SPINNER1.VALUE/THISFORM.SPINNER2.VALUE
ENDCASE
THISFORM.REFRESH
运行结果为:
2.用列表框控件显示STUDENT表中的专业名称,在列表框中选定专业,实现按专业统计学生的入学平均成绩。
(1)按照要求设置表单对象
(2)选中LIST1后单击右键,在快捷菜单中选择生成器,将需要出现在列表框中专业名称输入,单击确定。
(3)给列表框控件填写Click事件代码:
SELECT AVG(入学成绩) FROM STUDENT;
WHERE 专业=THISFORM.LIST1.VALUE INTO ARRAY A
THISFORM.TEXT1.VALUE=A(1)
运行结果为:
3.设计通过定时器控件控制“欢迎使用汽车管理系统”标签文字从右向左循环移动。
(1)按照要求设置表单对象
(2)设置计时器的时间间隔为100MS,双击计时器控件,输入代码:
if thisform.label1.left>thisform.width
thisform.label1.left=0
else
thisform.label1.left=thisform.label1.left+10
endif
这里文字从左到右移动的动态效果其实就是文字位置的变化,只需要控制文字在到达右边边框的位置时移动到左边即可。
运行结果为: