注册 登录
编程论坛 VFP论坛

timer调用

tbk_lcy 发布于 2023-02-08 16:00, 985 次点击
求教:如何在关闭一个表单时,触发顶层表单(名称为HC)的一个timer
8 回复
#2
sam_jiang2023-02-08 19:41
顶层表单和你要关闭的表单是什么关系?

假设你把顶层表单设置为public,omainfrm就可以了。

你要关闭的表单的unload事件里加一句omainfrm.timer1.interval=1000,计时器就开始工作了。
#3
tbk_lcy2023-02-09 08:30
回复 2楼 sam_jiang
请问如何把表单设置为public
#4
laowan0012023-02-09 10:38
do form 顶层表单 name 顶层表单名
NAME VarName [LINKED]
指定一个用来引用表单或表单集的内存变量或数组元素。如果指定的内存变量不存在,Microsoft Visual FoxPro 将自动创建它。如果指定一个数组元素,则在执行 DO FORM 之前,该数组必须存在。如果指定的内存变量或数组元素已经存在,则改写原有内容。如果省略 NAME 子句,则 Visual FoxPro 创建一个与表单或表单集文件同名的对象型内存变量。包含 LINKED 可用来连接表单到相关联的内存变量,当变量超出作用域时释放表单。如果没有包含 LINKED,即使没有与表单相关联的内存变量,表单仍可以是活动的。

需要的时候,引用“顶层表单名”即可执行相应的操作
#5
tbk_lcy2023-02-09 11:11
再描述一下我的问题:
1.执行表单1(名称为HC)时,表单HC的控件timer1运行,3分钟后,DO 表单2,timer1.enabled =.F.。
2.当表单2退出时,仍然想触发表单1的timer1控件,在表单2的unload里写入“hc.Timer3.enabled =.t.”语句,但是不能触发表单1的timer1控件,该如何解决?
#6
吹水佬2023-02-09 12:01
不同的表单设计有不同处理方法
如果是上下层表单,且下层是模式表单就最简单,在 DO FORM 的下一句处理就可以。
#7
tbk_lcy2023-02-09 13:42
回复 6楼 吹水佬
表单1是顶层表单
#8
吹水佬2023-02-09 14:41
以下是引用tbk_lcy在2023-2-9 13:42:18的发言:

表单1是顶层表单


表单2 的属性 WindowType=1

表单1.timer1.timer
this.enabled =.F.
DO 表单2
this.enabled =.T.
#9
cjc10102023-02-09 16:04
1、主程序要定义个全局变量 aa,用于表单2引用表单1
public aa
2、启动表单1时另命名为aa
do form 表单1 name aa   
3、表单2的release或unload里写
aa.timer1.enabled=.t.
1