| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2102 人关注过本帖
标题:_screen创建的timer在time事件里不能让它停下来吗?
只看楼主 加入收藏
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
_screen创建的timer在time事件里不能让它停下来吗?
在主程序里创建timer控件,想实现的是按下ctrl+alt+home组合键后,调用输入口令表单,输入正确后,打开系统菜单。
但问题是,调用输入口令表彰后不能停下来,他会一直不停地出表单,设置了this.enabled=.f.和interval=0都停不下来。为什么?
程序代码:
Define Class Timer5 As Timer
   Top = 0
   Left = 120
   Height = 23
   Width = 23
   Interval = 700
   Procedure Timer
      nlastkeynumb=Lastkey()
      If nLastkeynumb=151 .And. NetServerMenu
         this.Interval = 0
         this.Enabled = .F.
         Public SysPwConVar1 , SysPwConVar , SysCyhPwVar
         SysPwConVar = 1
         SysPwConVar1 = .F.
         SysCyhPwVar = ''
         Do Form 系统管理口令.scx with 1
         Read Events
         If SysPwConVar1 = .T.
            SysCurUser = Substr(SysCyhPwVar,AT('>',SysCyhPwVar) + 1)
            SysCurKs = Substr(SysCyhPwVar,1,AT('',SysCyhPwVar) - 1)
            _Screen.Height = 93
            Set Sysmenu To
            Set Sysmenu On
            Do MenuServer.Prg
            NetServerMenu=.F.
         Endif
         release SysPwConVar1 , SysPwConVar , SysCyhPwVar
         this.Interval = 700
         this.Enabled = .T.
      Endif
      If nLastkeynumb=159 .And. !NetServerMenu
         this.Enabled = .F.
         this.Interval = 0
         Set Sysmenu To
         Set Sysmenu Off
         _Screen.Height = 72
         NetServerMenu=.T.
         SysCurUser=''
         SysCurKs=''
         this.Interval = 700
         this.Enabled = .T.
      Endif
Enddefine
搜索更多相关主题的帖子: screen 主程序 组合键 
2016-07-25 17:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:20 
有时候,Timer不会停下来,就算 this.enabled=.f.也没有,怎么办呢?用变量吧
在Timer的 init中,
this.tag="1" &&初始化
在Timer的 Timer中,
if this.tag="1"
   *你要做的事情
   if 你认为要停止的条件 =.t.
      this.enabled=.f. &&停止
      this.tag="0" &&为了保险
   endif
endif


[此贴子已经被作者于2016-7-25 20:18编辑过]

2016-07-25 17:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 楼主 hyswcyh01
IF VARTYPE(_screen.Timer1) != "O"
    _screen.AddObject("Timer1", "myTimer")
    ON KEY LABEL CTRL+A _screen.Timer1._SetTimer
ENDIF

DEFINE CLASS myTimer AS Timer
    Interval = 1000
   
    PROCEDURE Timer
        _screen.Caption = TTOC(DATETIME()) + " ... 用户信息"
    ENDPROC

    PROCEDURE _SetTimer
        this.Enabled = !this.Enabled
    ENDPROC
ENDDEFINE
2016-07-25 17:23
hepingfly
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:195
专家分:657
注 册:2015-5-21
收藏
得分:0 
.   .


[此贴子已经被作者于2016-7-28 22:44编辑过]


星际花草
2016-07-25 22:12
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
收藏
得分:0 
回复 3楼 吹水佬
还是停不下来呀?真是奇怪了。
2016-07-26 15:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用hyswcyh01在2016-7-26 15:10:15的发言:

还是停不下来呀?真是奇怪了。

能停的吧?我的是示例,按 CTRL+A 开/关切换。
2016-07-26 16:27
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
收藏
得分:0 
回复 6楼 吹水佬
不行呀,还是会停不下来,有时可以,但有时还是不行。

不会的timer控件多有关系吧,我建了5个,应该没什么问题吧,它们各自的时间都不太一样,但都在1秒之内。
实在不行,我就再精减一下。

[此贴子已经被作者于2016-7-27 11:16编辑过]

2016-07-27 11:14
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用hyswcyh01在2016-7-27 11:14:18的发言:

不行呀,还是会停不下来,有时可以,但有时还是不行。

不会的timer控件多有关系吧,我建了5个,应该没什么问题吧,它们各自的时间都不太一样,但都在1秒之内。
实在不行,我就再精减一下。

我都说了,有时候,就是会出现这样的情况的,只好利用变量,我前段时间,就发现这个问题,我回家把列子找出来。就好像我上面说的。
2016-07-27 12:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 7楼 hyswcyh01
定时器消息优先级是最低的,有时甚至会被丢弃,定时器并不定时。
定时器说是精度到1ms,实际是不可能,如果时间间隔较小时试试这样:
PROCEDURE Timer
    INKEY(0.01)
    _screen.Caption = TTOC(DATETIME()) + " ... 用户信息"
ENDPROC

PROCEDURE _SetTimer
    this.Enabled = !this.Enabled
    INKEY(0.01)
ENDPROC
2016-07-27 15:01
快速回复:_screen创建的timer在time事件里不能让它停下来吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038854 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved