VFP的计时器用法实例 1 引 言 在程序设计和软件开发中,经常需要设计计时器,如:秒表、正计时器、倒计时器等。这些计时器的设计方法大同小异,本文以倒计时器设计为例介绍两种设计倒计时器的方法。 Visual FoxPro中的计时器控件有一个Timer事件,每经过Interval(单位为毫秒)属性指定的时间就执行该事件一次。利用该控件的这一特点再配合一些程序可设计各种计时器,包括倒计时器。 2 利用计时器控件和设置计数变量设计倒计时器 2.1 设计思想 程序中用一个计数变量t来实现计时,在表单的Init事件中给t赋初值5400(本例中倒计时时间设为90分钟,即5400秒)。程序中用到一个计时器控件,设置计时器控件的Interval属性为1000(即1秒),则它每秒钟被触发一次。在计时器的Timer事件代码中加入t=t-1,则每隔1秒钟t递减1,5400秒后t减到0,定时时间到。程序中还用到3个变量th、tm、ts,分别用来表示剩余时间的时、分、秒,用于将剩余时间t用时分秒的格式显示。 在表单的Init事件代码中包含thisform.timer1.enabled=.F.,再在“开始”按钮的Click事件代码中加入代码:thisform.timer1.enabled=.T.。这样当单击“开始”按钮时才开始计时。 2.2 程序清单 ⑴表单Form1的Init事件代码: thisform.timer1.enabled=.F. public t t=5400 ⑵标签Label1的属性 Caption:剩余时间 ⑶标签Label2的属性 Caption:90分钟 ⑷计时器Timer1的属性 Interval:1000 计时器Timer1的timer事件代码: ift<=0 messagebox(″定时时间到!″) else th=int(t/3600) tm=int((t-th*3600)/60) ts=t-th*3600-tm*60 thisfor m.label2.caption=str(th,2)+″:″+str(tm,2)+″:″+str(ts,2) endif t=t-1 ⑸命令按钮Command1的属性 Caption:退出 命令按钮Command1的Click事件代码: thisform.timer1.enabled=.T. ⑹命令按钮Command2的属性 Caption:退出 命令按钮Command2的Click事件代码: release thisform 2.3 表单运行结果 本表单包含两个标签控件和两个命令按钮,运行结果如图1所示。 1 3 利用计时器控件和时间函数设计倒计时器 3.1 设计思想 本程序通过计时器控件和时间函数seconds()来设计倒计时器。seconds()函数可以以秒为单位返回自午夜以来经过的时间。在“开始”按钮的Click事件中加入代码:t0=seconds()。在计时器控件的Timer事件代码中加入:t1=seconds()、t2=5400+t0、t3=t2-t1。t0为单击“开始”按钮时离午夜的时间,t1为计时器每次触发时距午夜的时间,t2为定时结束时距午夜的时间,t3为剩余时间。 3.2 程序清单 ⑴表单Form1的Init事件代码: thisform.timer1.enabled=.F. ⑵标签Label1的属性 Caption:剩余时间 ⑶标签Label2的属性 Caption:90分钟 ⑷计时器Timer1的属性 Interval:500 计时器Timer1的timer事件代码: t1=seconds() t2=5400+t0 t3=t2-t1 if t3<=0 messagebox(″定时时间到!″) else th=int(t3/3600) tm=int((t3-th*3600)/60) ts=t3-th*3600-tm*60 thisform.label5.caption=str(th,2)+″:″+str(tm,2)+″:″+str(ts,2) endif ⑸命令按钮Command1的属性 Caption:开始 命令按钮Command1的Click事件代码: public t0 t0=seconds() thisform.timer1.enabled=.t. this.enabled=.f. ⑹命令按钮Command2的属性 Caption:退出 命令按钮Command2的Click事件代码: release thisform 4 两种设计方法的比较及结论 第一种方法是用得较多的,笔者所见到的计时器设计多类似此法,但经过本人反复验证,发现此法设计的计时器不够准确,每分钟比实际时间慢5秒。当然可以通过算法校正。 第二种方法由于用到了时间函数,所以计时准确,由于巧妙地运用了seconds()函数,它并不要求计算机的时间设置准确。 当然,利用计算机计时的任何计时器都受计算机CPU时钟频率准确度的影响,两种方法设计的计时器也不例外。 2 本文来源:https://www.wddqw.com/doc/1737014fc9aedd3383c4bb4cf7ec4afe04a1b18e.html