首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

提问,关于窗体刷新用Timer出现的有关问题

2012-01-28 
提问,关于窗体刷新用Timer出现的问题!程序中,用Frame反应数据库的更新,当有新数据的时候就在Frame中反应出

提问,关于窗体刷新用Timer出现的问题!
程序中,用Frame反应数据库的更新,当有新数据的时候就在Frame中反应出来,并且Frame的背景变为黑色(突出显示),然后用一个Timer定时8秒对Frame的背景进行刷新(恢复为原背景),这样做当有一条更新时是可以的,但是当有几个Frame同时更新的时候,就不行了,往往是有一个已经变黑了,过了2秒,另一个也变黑,这个时候应该是第一个先恢复背景,而第二个要在第一个恢复2秒后才恢复背景,但是现在的情况是这两个一起恢复。我想可能是Timer只负责恢复,不判断的原因吧。于是就用了API中的延时来做,但是问题又出来了,因为延时好像只能同时对一个作用,所以当有两个Frame同时有数据更新,需要同时变背景的时候,还是只有一个变了,而另一个必须等这个恢复以后才会变。不知道该怎么解决,高手帮忙啊!

[解决办法]
'不用api延迟好像也可以的阿, 搂住参考
'在.bas里加
Type ctrlFrame
blnChg As Boolean
dttime As Date
End Type
'画面上添加 Frame1控件组3个,下标0,1,2
'添加command4控件组3个,下标0,1,2
'添加timer, interval设为500
'代码


Option Explicit
Dim f(2) As ctrlFrame
Const colorDefault As Long = &H8000000F

Private Sub Command4_Click(index As Integer)
f(index).blnChg = True
f(index).dttime = Now
Me.Frame1(index).BackColor = vbBlue
End Sub
Private Sub Timer2_Timer()
Dim i As Integer
For i = 0 To UBound(f)
If f(i).blnChg = True Then
If DateDiff( "S ", f(i).dttime, Now) > = 8 Then
f(i).blnChg = False
Frame1(i).BackColor = colorDefault
End If
End If
Next
End Sub

'操作,画面启动后,点command4按钮, 点一个亮一个,而后自动变回原来颜色

热点排行