Office中国论坛/Access中国论坛

标题: 字符闪烁中窗体ontimer属性问题 [打印本页]

作者: root    时间: 2013-8-3 17:02
标题: 字符闪烁中窗体ontimer属性问题
效果:点击按钮字符闪烁,再次点击则停止。

Private Sub btnFlashLabel_Click()

If Me!btnPulseLabel.Caption = "Stop" Then Exit Sub  //其他功能按钮
If Me!btnTitleBar.Caption = "Stop" Then Exit Sub    //其他功能按钮
If Me!Switcher = "False" Then

    Me.OnTimer = "=LabelFlasher()"   //这个函数实现亮灭一次(函数没有贴出),是不是按第一次时一直执行这个函数。再 按 一次时则执行else后面的语句。ontimer 属性怎么运行,它什么时候停止。

    Me!Switcher = "True"
    Me!btnFlashLabel.Caption = "Stop"
    Me!btnFlashLabel.ForeColor = 255
Else
    Me.OnTimer = ""
    Me.Switcher = "False"
    Me!btnFlashLabel.Caption = "Blinken"
    Me.FlashLabel.Visible = True
    Me!btnFlashLabel.ForeColor = 0
End If

End Sub
求教这个过程的运行细节。
作者: tmtony    时间: 2013-8-3 17:07
这个就是利用窗体的定时器事件  Timer事件 来实现的,有什么不太明白? 具体哪句代码?
作者: root    时间: 2013-8-3 18:22
这一段:
If Me!Switcher = "False" Then
Me.OnTimer = "=LabelFlasher()"  
Me!Switcher = "True"
    Me!btnFlashLabel.Caption = "Stop"
    Me!btnFlashLabel.ForeColor = 255
为什么一按按钮就一直执行LabelFlasher(),直到第二次按下按钮才去执行else语句后面的代码。
如果一按按钮就一直执行LabelFlasher(),那么这些语句
   Me!Switcher = "True"
    Me!btnFlashLabel.Caption = "Stop"
    Me!btnFlashLabel.ForeColor = 255
是不是应该等LabelFlasher()执行完了再运行。可实际上并不是这样的。实际运行是:一按下按钮按钮就变成红色stop
并且字符一直闪烁。再单击则回到开始的状态。
作者: tmtony    时间: 2013-8-4 10:00
因为 开始 Me!Switcher = "False" 所以就执行
Me.OnTimer = "=LabelFlasher()"  
而 ONTIMER事件执行时
你又设置了 Me!Switcher = "True" 所以他就执行了Else的代码
作者: root    时间: 2013-8-6 11:21
你好站长,你看程序是不是这样运行:ontimer事件执行一次后就应该执行else后面的代码,然后又返回到if语句再次执行ontimer事件,然后再次执行else后面的代码。这样一直循环下去吗




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3