摘要:本文介绍在vb程序中用timer控件创建一个超长时间的计时器对象,将其编译成activex dll部件,利用代码的可重用性,在其它应用程序中调用。
关键词:vb 计时器 对象
vb系统中提供了固有计时器timer控件,通过给计时器控件的interval属性设置不同的数值,就可以控制计时器运行的时间间隔,但该属性是一个双字节的整型变量,最大值只能设置为65535,即只有65535毫秒,约一分钟多一点,在需要长时间计时时,该控件就无能为力了。本文给出用timer控件创建一个超长时间的计时器对象,并将其编译成activex dll部件,供其它应用程序调用,可实现最大限度地利用代码的可重用性。下面给出这个超长计时器对象的编程设计过程,供读者参考选用。
1.编写程序
启动vb,新建一个activex dll工程,将工程命名为newtimer,将类模块名class1改名为longtimer。在工程中添加一个窗体form1,在窗体上加入一个timer计时器控件timer1。打开longtimer类模块,加入如下程序代码:
option explicit
public event tick() ''声明事件
private nz as integer
private cs as integer
private m_form as form1
private withevents m_timer as timer ''声明对象类变量
''返回enable属性值
public property get enabled() as boolean
enabled = m_timer.enabled
end property
''设置enable属性值
public property let enabled(byval vnewvalue as boolean)
m_timer.enabled = vnewvalue
end property
''返回interval属性值
public property get interval() as long
interval = m_timer.interval
end property
''设置interval属性值
public property let interval(byval vnewvalue as long)
cs = 0
nz = vnewvalue \ 65536 + 1
m_timer.interval = vnewvalue \ nz
end property
''类初始化事件
private sub class_initialize()
set m_form = new form1
load m_form
set m_timer = m_form.timer1
end sub
''类终止事件
private sub class_terminate()
unload m_form
set m_timer = nothing
end sub
''产生tick事件
private sub m_timer_timer()
cs = cs + 1
if cs >= nz then
raiseevent tick
cs = 0
end if
end sub
窗体form1只用来作计时器timer1的载体,不用于显示。
2.测试newtimer.dll
对activex dll部件进行测试,与标准的exe程序一样,可分为单步运行或全运行。在写完所有程序代码后,建议用户先用ctrl+f5进行全编译执行,发现检查newtimer程序的语法错误。也可建立一个测试工程与newtimer链接进行测试,针对由newtimer类模块提供的每个属性和事件,添加测试代码来测试它们的属性和方法。按f8,进入单步运行状态,逐个语句察看对newtimer类模块的调用情况。
3.编译newtimer.dll
完成测试,排除所有错误后,从“文件(f)”菜单中选择“生成newtimer.dll(k)”命令,编译生成newtimer.dll文件。编译成功后newtimer.dll文件将自动注册到windows注册表中,
4.引用newtimer.dll
引用activex dll部件同引用其他对象一样,从“工程(p)”菜单中选择“引用(n)”命令,打开引用窗口,从引用列表中选中newtimer对象。如果是第一次引用newtimer,则在引用窗体上单击“游览(b)”命令按钮,将newtimer.dll文件添加到可引用列表框中方可使用。
5.调用newtimer.dll
在应用程序中加入下述程序代码,实现参newtimer.dll的调用:
option explicit
dim withevents longtimer1 as longtimer
private sub longtimer1_tick()
print "时间到,此处添加处理程序"
end sub
private sub command1_click()
longtimer1.interval = 12000 ‘两分钟
longtimer1.enabled = true
&
[1] [2] 下一页