admin 管理员组

文章数量: 1086019


2024年3月27日发(作者:html中a标签href)

维普资讯

第1卷第3期 

贵阳学院学报(自然科学版) (季刊) 

JOURNAL OF GUIYANG COLLEGE 

Vo1.1 No.3 

2006年9月 

Natural Sciences(Quarterly) 

VB中计时器控件的长定时初探 

周 强 

(贵阳学院继续教育部,贵州贵阳550003) 

摘要:Windows应用程序中通常要用到时间控制的功能,VB中定时器Timer控件不能进行 

长定时,最大间隔时间是1分多钟,如需要长时间计时,该控件就无法完成。利用计数器和创 

建超长时间计时器对象能较好地解决长定时问题。 

关键词:VB;计时器;长定时 

中图分类号:TP312 文献标识码:A 文章编号:1673—6125(2006)03—0018—03 

Preliminary Study on Long-playing Timing of Timer 

Component in Visual Basic 

ZHOU Qiang 

(Guiyang College,Guiyang Guizhou 550003,China) 

Abstract:The function of time controlling is usually used in Windows application program.However, 

the timer component in Visual Basic can not meet the demand of long—playing timing because of its 

property of Interval just can be set one minute or a little more.If there is requirement to time for a long 

time,this component is helpless.This problem can be solved through using a counter or building a tim— 

er object that can time orf a very long time. 

Key words:Visual Basic;timer;long—playing timing 

目U菁 

专门解决这方面问题的控件。Timer控件最 

重要的是Interval即时间间隔属性,该属性 

决定了时钟事件之间的间隔,以毫秒为单 

位,取值范围为0~65535,因此,其最大时 

间间隔不能超过65秒,即一分钟多一点的 

时间。如果把Interval属性设置为1000,则 

在Windows应用程序中常常要用到时 

间控制的功能,如在程序界面上显示当前时 

问,或者每隔多长时间触发一个事件等等。 

Visual Basic中的Timer(时间)控制器就是 

收稿口期:2006—05—20 

作者简介:周

强(1973一),男,贵州贵阳人,贵阳学院继续教育部讲师。 

l8一 

维普资讯

表示每秒钟触发一个Timer事件。但这却 

意味着Timer控件只能响应大约一分钟之 

内的事件,在需要长时间计时时,该控件就 

无能为力了。例如,我们要开发一个测试系 

统,其测试过程需要限制一个确定时间,一 

般都在10~150分钟,开始自动计时,时间 

到报警测试结束。这就需多个Timer控件 

配合使用,这样做显得繁琐又不实用。本文 

采用两种方法来实现长定时问题。 

1利用计数器实现长定时 

用一个Timer控件,在其Timer过程中 

使用一个计数器,从而响应任意长时间间隔 

的事件。下面是一个定时实例的部分代码: 

控件属性 设置的值 

LabeUCaption 

“请输入限定时间(分钟):” 

Textl Tlext 

‘‘ ’’ 

CommandI Caption 

“确认” 

Timerl Interval 

6O00 

Enabled False 

在窗体通用模块General里声明n、t两 

个变量,n作为计数器,t用来存放限定时 

间。 

DIM n AS Integer 

DIM t AS Stirng 

Commandl—Click() 

t=Text1.Text 

Timer1.Enabled=True…… 

End Sub 

Timerl—Timer() 

n=n+l 

if n=veal(t、Then 

Beep 

Timer 1.Enabled=False 

End if 

End Sub 

将定时器的Interval属性值设为6000, 

使得计数器每分钟加1,当然也可以设置为 

其他的值,如1000,这样就使得计数器每秒 

钟加1,但这样要浪费较多的系统时间,运 

行速度受影响。 

2创建超长时间计时器对象 

采用Timer控件来创建一个超长时间 

的计时器对象,并将其编译成ActiveX DLL 

部件,供其它应用程序调用,可实现最大限 

度地利用代码的可重用性。 

编写程序:启动VB,新建一个ActiveX 

DLL下程,将工程命名为New Timer,将类模 

块名Classl改为Long Timer。在工程中添 

加一个窗体Forml,在窗体上加入一个Tim— 

er计时器控件Timerl。打开Long Timer类 

模块,加入如下程序代码: 

Public Event Tick()’声明事件 

Private nz As Integer 

Private CS As Integer 

Private m

——

Form As Forml 

Private With Events m

_

Timer As Timer’ 

声明对象类变量 

Public Property Get Enabled()As Boole— 

an 

Enabled=m

_

Timer.Enabled 

End Property 

‘设置Enable属性值 

Public Property l et Enabled(By Val 

vNewValue As Boolean) 

_

Timer Enabled=vNewValue 

End Propeny 

‘返回Interval属性值 

Public Property Get Interval()As Long 

Interval=m

_

Timer.Interval 

End Property 

‘设置Interval属性值 

Public Property let Interval(By Val 

vNewValue As Long) 

CS=0 

nz=vNewValue\65536+l 

_

Timer.Interval=vNewValue\nz 

End Property 

19— 

维普资讯

‘类初始化事件 

Private Sub CLASS Initialize() 

Set m

Form=NewForml 

Load m

Form 

Set m

Timer=m

_

FOITf1.Timerl 

End Sub 

‘类终止事件 

Private Sub CLASS Terminate() 

Unload m

——

Form 

Set m

Timer=Nothing 

End Sub 

‘产生Tick事件 

Private Sub m3imer_Timer() 

CS:CS+1 

If es>=nz Then 

Raise Event Tick 

CS:0 

End If 

End Sub 

窗体Form1只用来做计时器Timerl的 

载体,不用于显示。 

测试New Timer.DLL:对ActiveX DLL 

部件进行测试,与标准的EXE程序一样,可 

分为单步运行或全运行。在写完所有程序 

代码后,先用Ctrl+F5进行全编译执行,如 

发现检查New Timer程序的语法错误,也可 

建立一个测试工程与New Timer链接进行 

测试,针对由New Timer类模块提供的每个 

属性和事件,添加测试代码来测试它们的属 

性和方法。按F8,进人单步运行状态,逐个 

语句察看对New Timer类模块的调用情况。 

编译New Timer.DLL:完成测试,排除 

所有错误后,从“文件(F)”菜单中选择“生 

成NewTimer.dll(K)”命令,编译生成New 

Timer.dll文件。编译成功后New Timer.dll 

文件将自动注册到Windows注册表中,引用 

New Timer.DLL:引用AetiveX DLL部件同 

引用其他对象一样,从“工程(P)”菜单.中 

2O一 

选择“引用(N)”命令,打开引用窗口,从引 

用列表中选中New Timer对象。如果是第 

次引用NewTimer,则在引用窗体上单击 

“浏览(B)”命令按钮,将New Timer.DLL文 

件添加到可引用列表框中方可使用。 

调用New Timer.DLL:在应用程序中加 

人下述程序代码,实现New Timer.dll的调 

用: 

Option Explicit 

Dim With Events LOngTimerl As Long— 

time 

Private Sub LongTimerl

Tick() 

Print“时间到,此处添加处理程序” 

End Sub 

Private Sub Command l

Click() 

oLngTimer1.Interval=1 2000‘两分钟 

oLngTimer1.Enabled=True 

End Sub 

Private Sub Form Load() 

Set LongTimerl=New Longtime 

End Sl】b 

结束语 

以上两种方法初步解决了Timer控件 

不能长定时的问题,因此可以增大其运用范 

围和实用意义,但虽然解决了长定时问题, 

若要求Timer控件在时问控制上有高精度, 

还有待进一步探索。 

参考文献: 

[1]杨晶.VB6.0程序设计[M].北京:机械工业出 

版社,2004. 

[2]黄淼云,方楠.VB.NET控件应用编程实例教程 

[M].北京:北京希望电子出版社.2003. 

[3]东箭工作室.Visual Basic5.0中文版程序设计 

[M].北京:清华大学出版社,1997. 

[4]PETROUTSOS E.Visual Basic5从入门到精通 

[M].北京:电子工业出版社,1997. 


本文标签: 时间 控件 测试