VFP实例小程序—计时器

时间:2023-04-12 09:13:17 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


VFP的计时器用法实例

1

在程序设计和软件开发中,经常需要设计计时器,如:秒表、正计时器、倒计时器等。这些计时器的设计方法大同小异,本文以倒计时器设计为例介绍两种设计倒计时器的方法。

Visual FoxPro中的计时器控件有一个Timer事件,每经过Interval(单位为毫秒)属性指定的时间就执行该事件一次。利用该控件的这一特点再配合一些程序可设计各种计时器,包括倒计时器。 2 利用计时器控件和设置计数变量设计倒计时器 21 设计思想

程序中用一个计数变量t来实现计时,在表单的Init事件中给t赋初值5400(本例中倒计时时间设为90分钟,即5400秒)。程序中用到一个计时器控件,设置计时器控件的Interval属性为1000(即1秒),则它每秒钟被触发一次。在计时器的Timer事件代码中加入tt1,则每隔1秒钟t递减15400秒后t减到0,定时时间到。程序中还用到3个变量thtmts,分别用来表示剩余时间的时、分、秒,用于将剩余时间t用时分秒的格式显示。 在表单的Init事件代码中包含thisformtimer1enabled=.F,再在“开始”按钮的Click事件代码中加入代码:thisformtimer1enabled=.T。这样当单击“开始”按钮时才开始计时。 22 程序清单

⑴表单Form1Init事件代码: thisformtimer1enabled=.F public t t5400

⑵标签Label1的属性 Caption:剩余时间 ⑶标签Label2的属性 Caption90分钟

⑷计时器Timer1的属性 Interval1000

计时器Timer1timer事件代码: ift<=0

messagebox(″定时时间到!″) else

thintt3600 tminttth3600)/60 tstth3600tm60

thisfor mlabel2captionstrth2)+″:″+strtm2)+″:″+strts2 endif

tt1

⑸命令按钮Command1的属性 Caption:退出

命令按钮Command1Click事件代码: thisformtimer1enabled=.T ⑹命令按钮Command2的属性 Caption:退出

命令按钮Command2Click事件代码: release thisform 23 表单运行结果

本表单包含两个标签控件和两个命令按钮,运行结果如图1所示。



1




3 利用计时器控件和时间函数设计倒计时器 31 设计思想

本程序通过计时器控件和时间函数seconds()来设计倒计时器。seconds()函数可以以秒为单位返回自午夜以来经过的时间。在“开始”按钮的Click事件中加入代码:t0seconds()。在计时器控件的Timer事件代码中加入:t1seconds()t25400t0t3t2t1t0为单击“开始”按钮时离午夜的时间,t1为计时器每次触发时距午夜的时间,t2为定时结束时距午夜的时间,t3为剩余时间。 32 程序清单

⑴表单Form1Init事件代码: thisformtimer1enabled=.F ⑵标签Label1的属性 Caption:剩余时间 ⑶标签Label2的属性 Caption90分钟

⑷计时器Timer1的属性 Interval500

计时器Timer1timer事件代码: t1seconds() t25400t0 t3t2t1 if t3<=0

messagebox(″定时时间到!″) else

thintt33600 tmintt3th3600)/60 tst3th3600tm60

thisformlabel5captionstrth2)+″:″+strtm2)+″:″+strts2 endif

⑸命令按钮Command1的属性 Caption:开始

命令按钮Command1Click事件代码: public t0

t0seconds()

thisformtimer1enabled=.t thisenabled=.f

⑹命令按钮Command2的属性 Caption:退出

命令按钮Command2Click事件代码: release thisform

4 两种设计方法的比较及结论

第一种方法是用得较多的,笔者所见到的计时器设计多类似此法,但经过本人反复验证,发现此法设计的计时器不够准确,每分钟比实际时间慢5秒。当然可以通过算法校正。

第二种方法由于用到了时间函数,所以计时准确,由于巧妙地运用了seconds()函数,它并不要求计算机的时间设置准确。

当然,利用计算机计时的任何计时器都受计算机CPU时钟频率准确度的影响,两种方法设计的计时器也不例外。

2


本文来源:https://www.wddqw.com/doc/1737014fc9aedd3383c4bb4cf7ec4afe04a1b18e.html