1  /  1  页   1 跳转 查看:747

关于pb的timer事件

关于pb的timer事件

pb没有timer控件,一个窗口只有一个timer事件,请问在一个窗口中如何写两个timer过程?
 

回复:关于pb的timer事件

我没做过这个东西,就是,想这个办法,你看可以不可以,设置timer的时间是两个过程的最大公约数

然后呢,加一个计数器,计算现在运行了多少次timer事件,计数器是窗口的公共变量

然后呢,这样子来,我假设有A事件是30分钟触发,B事件是40分钟触发,这样子最大公约数是10,timer事件是10分钟触发

然后呢,A事件触发的条件是timer事件触发30/10=3次,A事件触发一次
  B事件触发的条件是timer事件触发40/10=4次,B事件触发一次

所以呢,在timer事件里,只要每次都把计数器加一,然后呢,做一个除法,看一下是不是3或者4,就知道要不要触发A或者B事件了

嗯,因为不知道你的窗口要运行多长时间,所以要在计数器到integer的最大值的时候,把他设回0,就是,不要给他溢出,如果你不喜欢做除法,你可以再加一个boolean的变量,设置B事件有没有执行,就是这样子:

integer count = 0  boolean b = false
timer(10)
count++
if(count == 3) { 执行A事件; b = true; }
else if(b == true) { 执行B事件; b = false; count = 0; }

意思就是,每次timer执行,计数加一,如果到第三次执行了,就执行A事件,然后呢,打开B事件的信息号灯,这样子第四次执行的时候,就可以根据信号灯有没有打开执行B事件了,B事件执行完,就把计数器恢复0,把信号灯关上,这样子做可以避开除法,也可以避开溢出,就是,要再加一个窗口的公共变量

我不知道是运算快,还是公共变量占用资源多,所以我不知道哪种方法好,你自己试一下吧,有没有别的办法,我也不知道了
 

回复:关于pb的timer事件

哦,我上面的代码,是用了C语法,不是pb的,你不要直接copy,copy用不到的。。。我就是说一种方法,不是给你代码
 

回复:关于pb的timer事件

楼上是一种方法。
还可以使用timing对象。
 
1  /  1  页   1 跳转

版权所有 程序员家园论坛   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.015625 second(s) , 3 queries. 浙ICP备07502118号
返顶部