标题:关于TIMER事件的触发
只看楼主
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:226
专家分:42
注 册:2019-3-8
结帖率:96.55%
已结贴  问题点数:20 回复次数:11 
关于TIMER事件的触发
暴汗!!!一个计时器竟然搞不定
表单form1上有timer1,有个label,有个command。
想实现的效果是:表单生成时,不触发timer,点击command后触发timer,interval为500,以实现标签的闪烁提示。
form1的init中:thisform.timer1.Enabled=.F.  &&不触发timer
command中:thisform.timer1.Enabled =.T. &&启动timer
timer1的timer中:
IF thisform.label1.Visible =.T.
thisform.label1.Visible =.F.
ELSE
thisform.label1.Visible =.T.
ENDIF
运行后,timer事件没触发,label1也没显示,更没闪烁。百思不得其解,可能是什么原因导致的呢?

奇怪的是,修改一下:删除form1的init中:thisform.timer1.Enabled=.F. ,command中:thisform.timer1.Enabled =.F.,则表单生成时就出现闪烁的标签,点击command后计时器停止。

请教:前面那段设置,为什么不能触发timer?谢谢!
搜索更多相关主题的帖子: 事件 TIMER command 触发 thisform 
2021-06-12 16:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
程序代码:
** test.prg
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as form
    ADD OBJECT label1 as label WITH left=10,top=10,caption="闪...闪..."
    ADD OBJECT cmd1 as commandbutton WITH left=80,top=10,height=22,caption="开关"
    ADD OBJECT timer1 as timer WITH interval=500,enabled=.F.
    PROCEDURE timer1.timer
        thisform.label1.visible = !thisform.label1.visible
    ENDPROC
    PROCEDURE cmd1.click
        thisform.timer1.enabled = !thisform.timer1.enabled
    ENDPROC   
ENDDEFINE
2021-06-12 17:13
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:226
专家分:42
注 册:2019-3-8
得分:0 
谢谢吹版!和我的需求可能有点不同,怪我没说清楚!!!
2021-06-12 21:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 3楼 zhousr
将你运行的代码给人家测试一下不就好了吗

2021-06-12 22:21
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:4 
测试了一下,楼主所说的问题根本不存在。为什么不将你的代码附上呢?

泉城飞狐
2021-06-13 09:12
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:226
专家分:42
注 册:2019-3-8
得分:0 
谢谢大家,下面是相关附件:

关于timer触发的相关说明.rar (111.02 KB)
2021-06-13 13:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 6楼 zhousr
只看到一个DOCX文件?
要的是VFP的代码相关文件,这样才能在VFP里测试看看问题所在
2021-06-13 14:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:4 
以下是引用吹水佬在2021-6-13 14:33:39的发言:

只看到一个DOCX文件?
要的是VFP的代码相关文件,这样才能在VFP里测试看看问题所在

楼主的文件属于"绝密"等级

坚守VFP最后的阵地
2021-06-13 15:01
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:4 
总共两行代码就行了啊。
设计时指定timer1的Enabled值为.f.,Interval 的值=500,没必要放在初始化中
按键中一句
thisform.timer1.Enabled=.t.开始

*****
thisform.timer1.Enabled=.f.结束

timer1中一句
thisform.label1.Visible=!thisform.label1.Visible
另外,吹版主的是正解啊。他是运行时建立对象。更加通用的面向对象程序的设计方法,C++ C J+………………

[此贴子已经被作者于2021-6-13 15:14编辑过]


dBase有人接盘了。
2021-06-13 15:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用xuminxz在2021-6-13 15:09:20的发言:

另外,吹版主的是正解啊。他是运行时建立对象。更加通用的面向对象程序的设计方法,C++ C J+………………

ADD OBJECT timer1 as timer WITH interval=500,enabled=.F.
这不算是运行时建立的对象,是载入类定义的对象,与载入表单(SCX)定义的对象一样,其中 WITH 子项相当于表单设计器的“属性”设置。
如果在类方法过程中调用AddObject()方法创建的对象才是运行时建立的对象。
2021-06-13 15:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506005-1-1.html




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

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