开篇:润墨网以专业的文秘视角,为您筛选了一篇巧用VFP中的TIMER控件范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:计时器timer是Visual FoxPro(简称vfp)的新增控件。它提供了计时功能,即每隔一段指定的时间间隔就响应一次TIMER事件,执行相应的程序代码,用于控制某些进程。本文给出计时器控件的几个的用法。
关键词:TIMER;控件;表单; 属性;事件代码
中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)06-11515-02
1 序言
VFP作为20世纪90年代兴起的高级数据库管理软件,具有性能完善的编程语言、完整而丰富的工具、超高速的速度、极其友好的界面等特点,倍受用户的欢迎。它在20世纪80年代流行的XBASE系统软件的基础上提供了诸多新的功能,计时器TIMER是Visual FoxPro(简称VFP)的新增控件,就它的用法总结如下。
2 控制倒计时
我们经常在一些考试系统的界面上,可以看到有一个倒计时器控制考试的时间,这种倒计时的控制可以利用Visual FoxPro的TIMER控件进行设计。
创建控制倒计时表单的过程(该程序控制的时间为10分钟,该时间可以根据具体情况进行调整。)
(1)创建一个新表单。
设置表单的CAPTION属性为“倒计时”,适当调整表单的大小。
设置表单的LOAD事件代码:
PUBLICJ
J=0
(2)在表单上添加两个标签控件,名称分别为LABEL1和LABEL2,将LABEL1的CAPTION属性设置为“剩余时间”,将LABEL1的CAPTION属性设置为“10:00” ,适当调整标签的高度、宽度、字号、字体等。
(3)在表单上添加两个命令按钮控件,名称分别为COMMAND1、COMMAND2,将COMMAND1的CAPTION 属性设置为“开始计时”,将COMMAND2的CAPTION 属性设置为“退出”,适当调整命令按钮的高度、宽度、字号、字体等。
(4)在表单上添加一个计时器控件,名称为“TIMER1”
设置TIMER1 的INTERVAL属性为1000,ENABLED属性设置为 .F..
(5)设置COMMAND1的CLICK 事件代码如下:
ENABLED=.T.
(6)设置COMMAND2的CLICK 事件代码如下:
RELESE THISFORM
(7)设置TIMER1的TIMER事件代码如下:
T=60000
J=J+1
IFT-J=0
RELESETHISFORM
ELSE
A=INT((T-J)/60)
B=MOD((T-J),60)
THISFORM.LABEL2.CAPTION=STR(A,2)+":"+STR(B,2)
ENDIF
运行表单即可实现倒计时的功能。
3 设计动态的字符串
我们经常看到在某些界面上对象可以动态变化,上下移动、左右移动、字号越来越大、越来越小等各种变化。这些变化都可以通过TIMER控件进行控制。
创建标签对象能够移动的表单设计过程:
(1)创建一个新表单。
(2)在表单上添加一个标签控件,名称为“LABEL1”,设置其CAPTION属性为“计时器的应用”,适当调整标签的高度、宽度、字号、字体等。
(3)表单上添加一个计时器控件,名称为“TIMER1”,设置TIMER1 的INTERVAL属性为200。(间隔时间可以调整)
(4)设置TIMER1的TIMER事件代码
如果从左向右循环移动,则TIMER1的TIMER事件代码如下:
IF THISFORM.LABEL1.LEFT
THISFORM.LABEL1.LEFT= THISFORM.LABEL1.LEFT+4
*该句的“4”用来控制向右移动的速度,可以根据具体情况调整
ELSE
THISFORM.LABEL1.LEFT=0
ENDIF
如果从上向下循环移动,则TIMER1的TIMER事件代码如下:
IF THISFORM.LABEL1.TOP>0
THISFORM.LABEL1.TOP= THISFORM.LABEL1.TOP-4
*该句的“4”用来控制向上移动的速度,可以根据具体情况调整
ELSE
THISFORM.LABEL1.TOP=THISFORM.WIDTH-THISFORM.LABEL1.WIDTH
ENDIF
如果从左下角向右上角循环移动,则TIMER1的TIMER事件代码如下:
IF THISFORM.LABEL1.LEFT0
THISFORM.LABEL1.LEFT=THISFORM.LABEL1.LEFT+4
THISFORM.LABEL1.TOP=THISFORM.LABEL1.TOP-4
ELSE
THISFORM.LABEL1.LEFT=0
THISFORM.LABEL1.TOP=THISFORM.HEIGHT-THISFORM.LABEL1.HEIGHT
ENDIF
还可以利用随机函数控制标签以随机速度向随机方向循环移动。则TIMER1的TIMER事件代码如下:
IF INT(10*RAND())>5
IF THISFORM.LABEL1.LEFT=0
THISFORM.LABEL1.LEFT=THISFORM.LABEL1.LEFT+INT(10*RAND())
THISFORM.LABEL1.TOP=THISFORM.LABEL1.TOP-INT(10*RAND())
ELSE
THISFORM.LABEL1.LEFT=0THISFORM.LABEL1.TOP=THISFORM.HEIGHT-THISFORM.LABEL1.HEIGHT
ENDIF
ELSE
IF THISFORM.LABEL1.LEFT>0AND;THISFORM.LABEL1.TOP
THISFORM.LABEL1.LEFT=THISFORM.LABEL1.LEFT-INT(10*RAND())
THISFORM.LABEL1.TOP=THISFORM.LABEL1.TOP+INT(10*RAND())
ELSE
THISFORM.LABEL1.LEFT=THISFORM.WIDTH
THISFORM.LABEL1.TOP=0
ENDIF
ENDIF
对上述程序稍加修改,可以设计出控制其他对象、其他方向、其他移动速度、其他方式变化的表单。
4 动画设计
用VFP可以设计动画,方法之一是:利用TIMER控件的INTERVAL属性和图象控件VISIBLE属性,控制图象的连续播放,实现动画效果。下面通过一个具体例子说明。
(在进行设计之前假设已经通过其他方法获得3张动作有些连贯的图片,文件名字分别HW1.BMP、HW2.BMP、HW3.BMP)
(1)创建一个新表单。
(2)在表单上添加三个图象控件,名字分别为IMAGE1、IMAGE2、IMAGE3,PICTURE属性分别为HW1.BMP、HW2.BMP、HW3.BMP,IMAGE1的VISIBLE属性设为.T.,IMAGE2的VISIBLE属性设为.F.,IMAGE3的VISIBLE属性设为.F.,IMAGE1、IMAGE2、IMAGE3的大小、位置可以根据具体情况调整。
(3)在表单上添加一个计时器控件,名称为“TIMER1”,设置TIMER1 的INTERVAL属性为200,ENABLED属性设置为 .F.(间隔时间可以调整)。
(4)在表单上添加两个命令按钮控件,名称分别为COMMAND1、COMMAND2,将COMMAND1的CAPTION 属性设置为“开始播放”,将COMMAND2的CAPTION 属性设置为“退出”,适当调整命令按钮的高度、宽度、字号、字体等。
(5)设置COMMAND1的CLICK 事件代码如下:
ENABLED=.T.
(6)设置COMMAND2的CLICK 事件代码如下:
RELESE THISFORM
(7)设置TIMER1的TIMER事件代码如下:
DO CASE
CASE THISFORM.IMAGE1.VISIBLE=.T.
THISFORM.IMAGE2.VISIBLE=.T.
THISFORM.IMAGE1.VISIBLE=.F.
THISFORM.IMAGE3.VISIBLE=.F.
CASE THISFORM.IMAGE2.VISIBLE=.T.
THISFORM.IMAGE3.VISIBLE=.T.
THISFORM.IMAGE1.VISIBLE=.F.
THISFORM.IMAGE2.VISIBLE=.F.
CASE THISFORM.IMAGE3.VISIBLE=.T.
THISFORM.IMAGE1.VISIBLE=.T.
THISFORM.IMAGE3.VISIBLE=.F.
THISFORM.IMAGE2.VISIBLE=.F.
ENDCASE
运行该表单就可以实现动画效果。
5 结束语
本文给出了TIMER控件的几种用法,起抛砖引玉的作用。TIMER控件的作用还有待进一步挖掘。
参考文献:
[1]龚沛曾,陆尉民,杨志强.Visual Basic程序设计简明教程[M].高等教育出版社,2001,154-156.
[2]上海东方激光照排有限责任公司.著.Visual FoxPro程序设计[M].中国民航出版社,2001,110-112.
[3]刘瑞新,文成林,汪远征.Visual FoxPro程序设计教程[M].机械工业出版社,2004,86-89.
[4]崔巍,吴秋霞.Visual FoxPro数据库应用与程序设计[M].高等教育出版社,2004,229-230.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。